minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

ステータスバーによる通知方法を紹介します。

基本

まず、NotificationManager を取得します。
これは Android が標準で持つシステムサービスの一つです。

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

次に、Notification インスタンスを作成します。

int icon = R.drawable.notification_icon;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);

そして、Notification への拡張メッセージとIntentを定義します。
これによって、通知されたメッセージをユーザが選択したときにIntentを実行することができます。
通常の使い方では、このIntentによって何らかのActivityを起動します。

Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

最後に、Manager に通知します。

private static final int HELLO_ID = 1;
mNotificationManager.notify(HELLO_ID, notification);

これで、システムに通知され画面上部に通知アイコンが表示されます。

その他に、
・アラート音
・バイブ設定
・LED点灯
などの属性を付けることもできます。

通知内容の更新

一度通知した内容を更新したいときは、以前と同じIDを使って notify します。

カスタムビュー

RemoteViews を使って、Notification のビューを自在に変更することもできます。