最新の記事アプリケーションアクティビティ、インテント、サービスについてデバイスAndroidでのデバイス制御について。地磁気センサ、加速度センサなどマルチメディアグラフィックス、音楽や動画再生などマルチメディア処理についてユーザインターフェースAndroidのユーザインターフェイスについて、またユーザインターフェイスを提供するコンポーネントの話題について。リソースAndroidでのアイコン、画像、文字列、ローカライゼーションなどHacksマッシュアップ開発環境Androidの開発環境など。4.3の新機能、NotificationListenerServiceを解説します。NotificationListenerServiceは、ステータスバーへの通知を監視でき、ノーティフィケーションの取得や削除のタイミングでイベントを受け取れます。ステータスバーの内容をすべて読み取れる強力な機能ですが、その分セキュリティリスクも高くなります。4.3では設定画面から利用者が自分で許可しないかぎり機能は有効になりません。通知内容にあわせて自動で処理できることから応用範囲の広い機能といえます。ノーティフィケーション中のテキストに特定の文字列があればバイブレーションで震える、音を鳴らす、指定のアプリを起動する、またアプリにインターネットパーミッションがついていればノーティフィケーションの内容を外部へ送信してしまうかもしれません。使い方はアプリケーション次第なので信頼できるアプリケーション(もしくは業務用など特定の範囲で利用するなど)で注意してください。実装においても十分な検討が必要なのは言うまでもありません。NotificationListenerServiceの主なメソッドは次の通りです。説明onNotificationPosted()ノーティフィケーションが通知されたときに呼び出されますonNotificationRemoved()ノーティフィケーションが消されたときに呼び出されますgetActiveNotifications()現在表示中のノーティフィケーションをすべて取得しますcancelNotification()特定のノーティフィケーションをステータスバーから消します。キャンセルしたノーティフィケーションについてonNotificationRemovedが1回よびだされます。cancelAllNotifications()消去可能なすべてのノーティフィケーションを消去します。onNotificationRemoved()が複数回呼び出されます表のとおり、ステータスバーに表示されたノーティフィケーションの情報を取得できるほか、内容や通知を出したアプリに応じてノーティフィケーションを非表示にもできます。詳しい操作やサンプルコードは続きからNotificationListenerServiceに通知されるノーティフィケーションはStatusBarNotificationクラスとして扱われています。StatusBarNotificationは次のようなメソッドを持ちます。説明getId()ノーティフィケーションのIDを取得しますgetPackageName()パッケージ名を取得しますgetPostTime()通知時刻を取得しますisClearable()ノーティフィケーションが消去できるか、確認できますisOngoing()処理中(再生中、ダウンロード中)かを判定できますgetNotification()ノーティフィケーションを取得できます。tickerTextメンバで通知内容を取得できますStatusBarNotification#isClearable()メソッドでは、FLAG_ONGOING_EVENTフラグとFLAG_NO_CLEARフラグがどちらも立っていない場合、trueが返却されます。notification)メソッドです)。同様にisOngoing()メソッドではFLAG_ONGOING_EVENTフラグが立っていればtrueを返却します。getNotification()メソッドを使えば通知内容も取得できます。ノーティフィケーションの表示/非表示を受け取るではサンプルコードで動作を確認してみましょう。(実際に実行するときは設定画面から許可しなければいけませんが、手順は最後に解説します)。NotificationListenerServiceは名前の通りサービスとして動作するため、最初にAndroidManifest.xmlへ追加します。&lt;/application&gt;サンプルコードではNotificationListenerServiceの実装名をNotificationServiceとしました。インテントフィルタでactionを指定する必要があるため、忘れないように追記しましょう(10,11行目)。}}onCreate()メソッドとonDestroy()メソッドは通常のサービスと一緒ですが、ステータスバーに通知があった場合に呼び出されるonNotificationPosted()メソッド、ステータスバーから通知が消された場合に呼び出されるonNotificationRemoved()メソッドが追加されています。getActiveNotifications()メソッドを使うとアクティブな(現在ステータスバーに表示中の)ノーティフィケーションがすべて取得できます(21行目)。サンプルコードでは実装していませんが、通常のサービスと同じふるまいなのでブロードキャストレシーバーを使えばActivity等と通信することも可能です。tickerText:USBデバッグが接続されました通知へのアクセスを許可するサンプルコードを動かすためにはAndroidの設定>セキュリティ>通知へのアクセスから利用者自身でアプリケーションを許可する必要があります。設定>セキュリティセキュリティ>通知へのアクセス通知へのアクセス>チェックボックスをON以上、おつかれさまでした。Authormhidakaエンジニア。Androidと組込とRe:VIEW。techbooster主催。ひつじと呼ばれてます。2.0(β)に対応した解説書です。TechBooster.TechBoosterについて。