タグ

ブックマーク / techbooster.org (24)

  • リフレクションをつかってメソッドを呼び出す | TechBooster

    Javaにはreflectionと呼ばれる機能があります。クラスからフィールド、メソッド情報を取得するためのインターフェイスです。 取得したメソッドは実行でき、Androidではhideメソッドを使う際に応用出来ます。当然ながら、Android SDKのAPIとして公開されていないhideメソッドを使うことはリスクを伴います。 引数が変わったり、急に無くなってりするかもしれません(サポート対象外なので当然ですね)。 また、リフレクションを使って属性を変更し、Privateメソッド/フィールドにアクセスすることもできるため、こちらはUnitTestのときに威力を発揮します。 リフレクションを使う reflectionはjava.lang.reflectパッケージとしてサポートされており、動的に実行するメソッドを変えることも出来るので大変便利な機能です。 ただし、記事の内容を使ってhideA

    リフレクションをつかってメソッドを呼び出す | TechBooster
    yuiseki
    yuiseki 2017/05/16
  • LruCacheを使ってモダンなメモリキャッシュを実装する | TechBooster

    LruCache#LruCache(maxSize)コンストラクタ、putメソッド、getメソッド、またマルチスレッド制御での注意点について順番に説明します。 それでは、さっそくサンプルで確認していきましょう。 メモリキャッシュの生成 アプリケーション開発においてもっともありがちなBitmap(イメージ、画像)のキャッシュ制御を例にとり、キャッシュ周りの実装をまとめたBitmapCacheクラスを作成してみます。 ■src/BitmapCache.java public class BitmapCache { private LruCache<String, Bitmap> mMemoryCache; BitmapCache(){ int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); int cacheSize =

    LruCacheを使ってモダンなメモリキャッシュを実装する | TechBooster
    yuiseki
    yuiseki 2017/01/04
  • 初心者のためのM Permissions入門 | TechBooster

    今回はAndroid 6.0(Marshmallow)から導入された新しいパーミッションモデルを紹介します。M Permissionsと呼ばれているこの新しい仕組みではパーミッション(機能へのアクセス権限)の仕様が改善されており、アプリが利用するタイミングで機能利用の許可を求めるパーミッションモデルを採用しています。 今まではPlayストアからアプリをインストールするときに一括で権限を得るという、開発者にとってわかりやすい権限の仕組みでした。一方、利用者には、過剰な権限を要求されていたり、どのタイミングで使われているかわからないなど不安な点もありました。 M Permissionsでは利用時に許可ダイアログをだすかたちに改められています。この仕組はAndroid 6.0から導入されていますが、Android Studioでビルドに利用するSDKで挙動が変わる、似たようなAPIを使い分けるな

    初心者のためのM Permissions入門 | TechBooster
    yuiseki
    yuiseki 2016/12/16
  • Androidでアプリのインストール完了を検知する方法 | TechBooster

    Androidでは、アプリケーションのインストールが完了したことを検知することが可能です。 アプリケーションのインストールの完了を検知できれば、アプリのインストールに合わせて起動するようなアプリケーションを作成することも可能です。 <2012/01/31 onReceiveメソッドからのActivityの起動について追記しました。> アプリケーションのインストールが完了すると、BroadcastIntentが投げられます。 投げられたIntentをBroadcastReceiverでキャッチすることで、インストール完了時に処理を行えるようにします。 今回は、アプリケーションのインストールが完了した際に、以下のようなActivityを起動してみたいと思います。 それでは続きで詳しく見ていきましょう。 BroadcastReceiverの作成 アプリケーションのインストールが完了すると、「an

    Androidでアプリのインストール完了を検知する方法 | TechBooster
    yuiseki
    yuiseki 2015/09/15
  • NotificationListenerServiceを使ってステータスバーを監視する | TechBooster

    StatusBarNotification#isClearable()メソッドでは、FLAG_ONGOING_EVENTフラグとFLAG_NO_CLEARフラグがどちらも立っていない場合、trueが返却されます。このフラグはノーティフィケーションを発行するときに設定されます(具体的にはNotificationManager#notify(int id, Notification notification)メソッドです)。同様にisOngoing()メソッドではFLAG_ONGOING_EVENTフラグが立っていればtrueを返却します。 getNotification()メソッドを使えば通知内容も取得できます。 ノーティフィケーションの表示/非表示を受け取る ではサンプルコードで動作を確認してみましょう。 (実際に実行するときは設定画面から許可しなければいけませんが、手順は最後に解説します

    NotificationListenerServiceを使ってステータスバーを監視する | TechBooster
    yuiseki
    yuiseki 2015/08/24
  • マルチユーザ対応 Android 4.2以降の内部ストレージと外部ストレージ | TechBooster

    getFilesDirで取得できるPath以下にファイルを作成する。第1引数にファイル名、第2引数にアクセスモードを指定(MODE_PRIVATEが一般的)する。 ActivityクラスのgetFilesDirメソッド、getCacheDirメソッドを使うと端末で指定されているアプリケーション専用のデータ領域を取得できます。 ログにパスを出力するだけの簡単なサンプルコードを用意しました。実行してマルチユーザ時の挙動を確認してみましょう。 //アプリケーション専用データ領域 //ファイル保存ディレクトリ Log.d("Multi", " getFilesDir(): " + getFilesDir()); //キャッシュ保存ディレクトリ(消去される可能性あり) Log.d("Multi", " getCacheDir(): " + getCacheDir()); ※ちなみにCacheDirは

    マルチユーザ対応 Android 4.2以降の内部ストレージと外部ストレージ | TechBooster
    yuiseki
    yuiseki 2015/07/28
  • システムの起動時にサービスを実行する | TechBooster

    この表は一部ですので、詳細はhttp://developer.android.com/reference/android/content/Intent.htmlをご覧ください。 今回利用するのはシステムの起動完了時に発行されるandroid.intent.action.BOOT_COMPLETEDです。 ブロードキャストレシーバ ブロードキャストインテントはブロードキャストレシーバ(BroadcastReceiver)で受信します。 BroadcastReceiverクラスを継承したクラスを用意します。そしてonReceiveメソッドをオーバーライドし、そこで起動時に行いたい処理を記述します。 下記では常駐させたいサービス○○Serviceを起動するIntentを発行しています。 public class StartupReceiver extends BroadcastReceiver{

    yuiseki
    yuiseki 2015/06/29
  • Android WiFi DirectでP2P通信を行う方法(2) | TechBooster

    WiFi DirectとはWiFi対応機器同士を直接接続するP2P通信方式です。 P2P通信の名前の通り、アクセスポイントを必要としないことから、手軽に無線LANを使って通信できるAndorid 4.0の注目の新機能です。 (無線LANでは以前から1対1通信を行うアドホックモードが存在していましたが、WiFi Directではさらに発展させた1対複数通信が可能です) 前回の「WiFi DirectでP2P通信を行う(1)」の続編です。ブロードキャストレシーバに関してはこちらを参照してください。 今回も前回同様、WiFiDirectDemoをサンプルにWiFi Directの接続・切断処理、接続処理中のキャンセルについて解説します。 WiFiDirectDemo http://developer.android.com/resources/samples/WiFiDirectDemo/ind

    Android WiFi DirectでP2P通信を行う方法(2) | TechBooster
    yuiseki
    yuiseki 2015/06/24
  • Android 4.0 システムテーマ(Theme.DeviceDefault)で統一感を出す方法 | TechBooster

    Android 4.0(targetSdkVersionもしくはminiSDKVersionが14以上)ではアプリケーションのデフォルトテーマが、Theme.DeviceDefaultに統一されました。 今まででも未指定の場合はTheme.Black、Android 3.0以降であればTheme.Holoなどが適用されていましたが、Android端末ごとに適用されるテーマがカスタマイズされているなど、アプリケーション側ではレイアウトを制御しにくかったのが現状です。 今回、Android 4.0からTheme.DeviceDefaultが追加されたことで、端末メーカーが、自分の端末ごとにテーマを用意することになります。アプリケーションでThemeを指定しなければTheme.DeviceDefaultが適応されます。ユーザーにとっては使い慣れた端末のテーマが適応されることになり、統一感が向上し

    Android 4.0 システムテーマ(Theme.DeviceDefault)で統一感を出す方法 | TechBooster
    yuiseki
    yuiseki 2015/06/22
  • Socketクラスを使用してソケット通信をする | TechBooster

    今回はJavaのSocketクラスを使用してサーバーとソケット通信する方法を紹介します。 詳細は以下から。 ・Socketクラス SocketクラスはAndroidライブラリーではなく、Javaの標準ライブラリーに入っています。 このクラスではソケット通信に関する様々な接続方法が実装されていますが、今回は Socket(String host, int port)で宣言されているコンストラクタを使用します。 このコンストラクタの引数の詳細は以下。 このコンストラクタは、接続先のホスト名とポート番号を指定してオブジェクトを作成するだけで、接続まで行ってくれる便利なクラスです。 ・InputStreamReaderクラスとBufferedReaderクラス サーバーからのメッセージを取得するのにInputStreamReaderクラスとBufferedReaderクラスを使用します。 Inpu

  • Android 5.0 Lollipopの開発者オプション詳細解説 | TechBooster | TechBooster

    13項目がデバッグとしてまとめられています。「疑似ロケーションを許可」では疑似的な位置情報の利用を許可します。位置系アプリケーションでは便利な機能です。「デバッグアプリを選択」は項目名からはわかりませんが、アプリケーションの起動前にデバッガをアタッチできる機能です。「Wi-Fiを強制的にモバイル接続に切り替える」は優先的にモバイルデータ通信を利用します。 View HierarchyでView構造をチェックする 開発者オプションのなかに「表示属性検査を有効にする」という不思議な項目があります。これは英語表記のほうがわかりやすいかもしれません。英語では「Enable view attribute inspection」、Viewクラスの属性情報を監査するという意味だと思いますが、直訳したのでしょう。 利用には、チェックボックスを有効にしてから、Android Studio(またはEclips

    Android 5.0 Lollipopの開発者オプション詳細解説 | TechBooster | TechBooster
    yuiseki
    yuiseki 2014/12/10
  • Androidでの多言語対応方法 | TechBooster

    リソースの多言語対応は、res/以下のディレクトリ(たとえばres/values)に修飾子を付与するだけで、簡単に作成できます。 日語と英語(デフォルト)に対応する場合、下記2つのリソースを用意します。 values/string.xml values-ja/string.xml valuesディレクトリに修飾子としてjaを付与します。これで日語ロケールの場合は、日語でメッセージが表示されます。 ※今回は、国外のユーザーに対して分り易くするためデフォルトを英語(en)としています。 values/string.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, orientationSensorActivity!</string> <string name="

    Androidでの多言語対応方法 | TechBooster
    yuiseki
    yuiseki 2014/10/23
  • オープンソース「Androidの教科書」プロジェクトのお知らせ | TechBooster

    TechBoosterはAndroid開発の有志で行うオープンソースプロジェクトAndroid Open Textbook」を発起いたしました。 Android Open Textbook は「Androidの教科書」をつくるオープンソースプロジェクトです。 GitHubと書籍制作ツールRe:VIEWを利用して、開発者が欲しい技術情報を集約する試みです。現在、多くのAndroid書籍が発売されていますが、技術の進化は激しく、Androidのアップデートに追従しきれていない現状があります。Android Open Textbookプロジェクトでは、オープンソースプロジェクトとして開発者視点で知見をあつめ、広く一般に提供していきます。 ※Re:VIEWは、電子書籍と紙面の両方をターゲットとした書籍制作の為のプラットフォームです。「Effective Android」をはじめ、「MagicBo

    オープンソース「Androidの教科書」プロジェクトのお知らせ | TechBooster
    yuiseki
    yuiseki 2014/04/01
  • Android 画面上にアプリの情報を常時表示する方法 | TechBooster

    アプリを開発するとき、Android端末の画面上で常に情報を表示させたいというようなケースもしばしばあるかと思います。 たとえば、Android 4.0の開発者向けオプションで有効にすることができるCPU使用状況の表示機能は 有効にしておくと下図のように端末のCPU状況が常に画面上にオーバーレイ表示されるようになります。 アプリでも同様の事ができればNotificationやToastなどといったしくみ以上に、ユーザに対して情報を効果的に提供することができます。 今回は常に画面上に情報を表示する方法について紹介します。 ただし、後述するように、今回ご紹介するHowToはAndroid端末の画面を上書きする形でアプリのViewを表示するので、使い方を誤ると端末を操作できなくなる可能性があるので、画面設計は慎重に行うようにしましょう。 それではつづきから詳しい解説です。 Androidの表示レ

    Android 画面上にアプリの情報を常時表示する方法 | TechBooster
    yuiseki
    yuiseki 2014/03/23
  • ネットワーク通信用ライブラリVolleyを使いこなす | TechBooster

    Androidネットワークプログラミング用ライブラリ「Volley」を解説します。 モバイルアプリを開発するにあたってネットワーク通信の知識は欠かせないものとなっている一方、ネットワークプログラミングの世界にはキャッシュや高速化、データ取得やキャンセル処理などプログラミングテクニックが多数存在してます。これらの課題を効率的に解決する方法がVolleyライブラリです。 Volley公式ページ https://android.googlesource.com/platform/frameworks/volley/ Volleyの機能紹介とともにキャッシングやキャンセル処理などネットワークプログラミングに欠かせない処理をVolleyの実装をつかって順番に解説していきます。 非常に長い記事ですので始めに理解を深めるための内部処理を紹介します。APIなど詳細は記事の途中で随時解説します。 ネットワー

    ネットワーク通信用ライブラリVolleyを使いこなす | TechBooster
  • Android開発者が知るべき10のこと | TechBooster

    記事はAndroid DevelopersのDesigning for Seamlessnessを意訳、加筆したものです。Androidアプリをシームレスに連携させるためのノウハウを紹介します。 特性を理解する アプリケーションが高速に動作し、レスポンスが良くても、アプリケーション遷移やダイアログ表示を乱用した無計画なUI、不用意なデータの喪失、意図しないタイミングでの操作妨害など知らず知らずのうちにUXの良くない設計になっているかもしれません。これらの問題はどのように避ければ良いでしょう? アプリケーションが動作するコンテキスト Androidフレームワークの特性(アプリケーションへどんな影響を与えるか) を理解することが開発の手助けになります。 ユーザ操作を妨げない ユーザ操作のシームレス性で問題になるケースとしてよくあるのが、他のアクティブなアプリケーションを無視して、自分のダイア

    Android開発者が知るべき10のこと | TechBooster
    yuiseki
    yuiseki 2013/07/29
  • Androidの画面サイズを攻略して機種依存を吸収する(ナビゲーションバーとステータスバーのサイズを取得する) | TechBooster

    ※上記の名前付けは一般的なものではなく、今回の解説用に定義した名前です。(Displayクラスのサイズといえばどれもディスプレイサイズということになるため、わかりやすさを優先して図示しました) 特にステータスバーとナビゲーションバーは端末ごとカスタマイズされている可能性もあるため、動的に取得するのが望ましい項目と言えるでしょう。しかしながら、直接この2つの高さ情報を取得するAPIは存在していません。踏み込んで解説するならば、これらはアプリケーションの領域外でありアプリが気にする必要はなく、気にしないでいられるデザインやレイアウトを検討すべきである、という設計思想がうかがえます。設計思想を尊重するならば、このあと解説するAPIをなるべく使わないでいいように工夫できると機種依存の苦悩から解放されるでしょう。 取得する方法は続きから ナビゲーションバーを除いたディスプレイサイズを取得する ディス

    Androidの画面サイズを攻略して機種依存を吸収する(ナビゲーションバーとステータスバーのサイズを取得する) | TechBooster
  • カメラプレビューで顔検出を行う | TechBooster

    Androidでは以前からFaceDetectorクラスを用いることで画像に対して顔検出を行うことが可能でした。Android4.0(ICS)からは、画像(静止画)だけでなく、カメラのプレビュー(動画)に対して顔検出を行うことが新たに可能となりました。 実際に顔検出の処理を行う方法は以下の通りです。1から3の処理を記述する必要があります。 FaceDetectionListenerを実装(onFaceDetectionメソッドでCamera.Faceクラスが渡ってくるので必要な処理を記述) CameraクラスにFaceDetectionListenerを登録 Cameraクラスに検出開始を指示 顔が検出されるとFaceDetectionListenerのonFaceDetectionメソッドが呼ばれる カメラの基的な使い方は「カメラの使用方法(1)」を参照してください。 ※静止画の顔検出

  • Android 4.0からのActionBar再入門 スマートフォン向けのアクションバーの使い方 | TechBooster

    Android 3.x(Honeycomb)から追加された新UI、ActionBar(アクションバー)はAndroid 4.0.x(ICS:IceCreamSandwich)でも重要なユーザインターフェイスです。 今回はAndroid 4.0(スマートフォン版)に焦点を当てて、ActionBarの使い方を解説します。Android4.0 SDKからアプリケーションのデフォルトテーマが変わっており、ActionBarを標準で利用できます。 ActionBarの有無によるメニュー表示の違い 以下は「?」アイコンをもったヘルプメニューの表示を例に、ActionBarを使った場合、使わなかった場合のスクリーンショットです。UIの印象がずいぶん違うことが見て取れます。複数メニューを表示する場合はSplitActionBarが便利です。 詳細な使い方については続きから。 もしActionBarを利用し

    Android 4.0からのActionBar再入門 スマートフォン向けのアクションバーの使い方 | TechBooster
    yuiseki
    yuiseki 2012/01/26
  • もくじ | TechBooster

    TechBoosterの記事も増えてきたので、もくじを作りました。 分類はカテゴリに合わせています。今後も整備していく予定です。 2010/12/31までの記事をもくじに収録しました。(119項目) 開発環境 Andro […]