My Photo

« 靴が小さかった | Main | 新潟生存戦略 »

October 11, 2011

Androidアプリ開発メモ026:Notification

NotificationManager
Notificationはステータスバーに出る永続的な通知である。
サービスなどフォアグランドタスクでないものがユーザに通知する場合に使える。
使用するには、まずセンサーの利用でも出てきたgetSystemSerivice()を使ってNotificationManagerを取得する。getSystemService()の引き数はContext.NOTIFICATION_SERVICE。

Notificationの表示、キャンセルはNotificationManagerの以下のメソッドを使用する。

android.app.NotificationManagerクラス
public void notify(int id, Notification notification)
ステータスバーに表示されるNotificationをポストする。もし同じIDのNotificationがあなたのアプリによってポストされていてまだキャンセルされていない場合、更新された情報によって置き換えられる。
id:あなたのアプリでユニークなこのNotificationの識別子
android.app.NotificationManagerクラス
public void cancel(int id)

Notification
Notificationの生成はAndroid 3.0以降ではNotification.Builderを使う推奨されている。タブレット向けAndroidのスマートフォン向けAndroidが統合されたら、スマートフォンでもNotification.Builderを使うやり方が推奨になると思う。
Notification.BuilderはAndroid 3.0以降なので、現状ではスマートフォン向けAndroidではコンストラクタを使う。

android.app.Notificationクラス
public Notification(int icon, CharSequence tickerText, long when)
廃止予定。代わりにNotification.Builderを使え。
icon:ステータスバーに表示するアイコンのリソースID
tickerText:Notificationが最初に有効になったときに短時間表示されるテキスト
when:時間フィールドに表示する時間。System.currentTimeMillis時間ベース。
whenは何秒間表示するという表示時間の指定ではなく、ステータスバーが下方にドラッグされたて表示される一覧において、そのNotificationのエントリーの時間フィールドに表示される時間である。普通は System.currentTimeMillis()でよい。 setLastEventoInfo()でステータスバーが下方にドラッグされたときに表示される情報をセットする。
public void setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent)
廃止予定。代わりにNotification.Builderを使え。
標準の"Last Event"レイアウトのビューであるcontentViewフィールドをセットする。
そのビューではiconとwhenをアイコンフィールドと時間フィールドに使う。
contentTitle:拡張エントリーに入るタイトル
contentText:拡張エントリーに入るテキスト
contentIntent:ユーザが拡張Notificationをクリックしたときにランチするインテント。
setLastestEventInfo()の引数に使用するPendingIntentはPendingIntentクラスのstaticメソッドで取得する。
android.app.PendingIntentクラス
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)
戻り値:与えられたパラメータに合ったPendingIntent。FLAG_NO_CREATEの場合、NULLかもしれない。
requestCodeはstartActivityForResult()のrequestCodeと同じだと思う。 flagの意味はリファレンスを読んだけど良くわかりません。

// ノーティフケーションマネージャの取得
NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

// ノーティフケーションオブジェクトの生成・設定
Notification notification = new Notification(R.drawable.n1, "テスト通知", System.currentTimeMillis());

Intent intent= new Intent(this, com.example.notificationexample.NotificationExample.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this, "テストの通知", "テストの通知のテキスト", pendingIntent);

// ノーティフィケーションの表示
nm.notify(notification_id, notification);

設定によっては、一定時間で消える、振動させる、LEDを光らせる、なんてこともできるらしい。

参考:
サービスとNotification - 愚鈍人
Androidのド肝 >> ステータスバーに通知する(NotificationとNotificationManager)

« 靴が小さかった | Main | 新潟生存戦略 »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/52966850

Listed below are links to weblogs that reference Androidアプリ開発メモ026:Notification:

« 靴が小さかった | Main | 新潟生存戦略 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof