Notificationを使ってステータスバーに情報を表示する / Getting Started
|Notification(ノーティフィケーション)とはAndroidの画面上部に配置されているステータスバー上に
表示することができるメッセージのことを指します。
Activityを持たずにバックグラウンドで動作するサービスなどはNotificationを使うことで
ユーザに情報を通知することができます。
Notificationにはテキストメッセージを含め、以下のような設定をすることができます。
- テキストメッセージ
- アイコン
- バイブレーション
- LED
Notificationを使うのに重要となるメソッドは以下の通りです。
メソッド名 | 説明 |
---|---|
ContextクラスのgetSystemService() | NotificationManagerやLocationManagerなど、Androidの各種サービスのインスタンスを取得するときに使用します。 |
NotificationクラスのsetLatestEventInfo() | Notification詳細画面の表示設定を行う。 |
NotificationManagerクラスのnotify() | 生成したNotificationを通知する。 |
続きからこれらのメソッドの詳しい使い方について紹介します。
Notificationの生成と設定
まず、Notificationクラスを使ってNotificationを生成します。
1 | Notification n = new Notification(); // Notificationの生成 |
生成したNotificationに設定を行います。
以下のように、Notification通知時にステータスバー上に表示されるアイコンとメッセージを設定します。
1 2 | n.icon = R.drawable.coda; // アイコンの設定 n.tickerText = "This is a notification message..." ; // メッセージの設定 |
Notificationの通知後にステータスバーを引き延ばすと下図のようにNotificationの詳細情報を
確認することができます。
ここで表示する情報はsetLatestEventInfoメソッドを使って設定します。
具体的には以下のようにします。
1 2 3 4 5 6 | // PendingIntentの生成 Intent i = new Intent(getApplicationContext(), NotificationActivity. class ); PendingIntent pi = PendingIntent.getActivity( this , 0 , i, 0 ); // 詳細情報の設定とPendingIntentの設定 n.setLatestEventInfo(getApplicationContext(), "TITLE" , "TEXT" , pi); |
詳細情報をクリックしたときの動作をPendingIntentで設定することができます。
上の例ではNotificationの呼び出し元のActivityが呼ばれるように設定しています。
Notificationの通知
生成したNotificationを実際にステータスバー上に通知するにはNotificationManagerクラスを利用します。
NotificationManagerはNotificationを管理するクラスです。
Notificationの通知や通知のキャンセルが行えます。
Notificationクラスのインスタンスを取得するにはgetSystemServiceメソッドを使います。
1 2 | NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); |
インスタンスを取得したらnotifyメソッドで先ほど作成したNotificationを通知することができます。
1 | nm.notify( 1 , n); // 生成したNotificationを通知する |
第1引数にはNotificationの識別子、第2引数には生成したNotificationを設定します。
Notificationの識別子は通知のキャンセル時に指定することができます。
バイブレーション設定
Notificationの通知時にバイブレーションを使うことができます。
デフォルトのバイブレーションパターンのほか、独自のバイブレーションパターンを指定することもできます。
デフォルトのバイブレーションパターンを指定するには以下のように
defaultsフィールドにDEFAULT_VIBRATEを追加します。
1 | n.defaults |= Notification.DEFAULT_VIBRATE; // デフォルトのバイブレーションを設定する |
独自のバイブレーションパターンを指定するには以下のように、long型の配列をvibrateに設定します。
1 2 | long [] vibrate_ptn = { 0 , 100 , 300 , 1000 }; // 独自バイブレーションパターン n.vibrate = vibrate_ptn; // 独自バイブレーションパターンを設定 |
配列の各要素には0番目にバイブレーションを開始するまでの時間を、
それ以降はバイブレーションONとバイブレーションOFFの時間を交互に指定します。
(設定できる時間単位はミリ秒です)
LED設定
Notificationの通知と同時に端末のLEDを点滅させることでユーザに情報の通知が行えます。
LEDもバイブレーションと同様に、デフォルトの点滅パターンと独自の点滅パターンを設定することができます。
デフォルトの点滅パターンを設定するにはdefaultsフィールドにDEFAULT_LIGHTSを追加します。
1 | notification.defaults |= Notification.DEFAULT_LIGHTS; |
また、独自の点滅パターンを設定するにはNotificationの下記フィールドに設定をする必要があります。
フィールド名 | 説明 |
---|---|
ledARGB | LEDの色をARGB形式で指定します。 |
ledOnMS | LEDをONにする時間をミリ秒単位で指定します。 |
ledOffMS | LEDをOFFにする時間をミリ秒単位で指定します。 |
flags | Notificationの詳細な動作を指定するフラグを設定します。 |
たとえば青色のLEDを点滅させようとした場合には以下のようになります。
1 2 3 4 | n.ledARGB = 0xff0000ff ; // LEDを青色に点滅させる n.ledOnMS = 3000 ; // 点灯する時間は3000ミリ秒 n.ledOffMS = 1000 ; // 消灯する時間は1000ミリ秒 n.flags |= Notification.FLAG_SHOW_LIGHTS; // LED点灯のフラグを追加する |
サンプルプログラム
それではサンプルプログラムを紹介しましょう。
下記のサンプルプログラムはボタンを押すことでNotificationを生成し、ステータスバー上に通知を行います。
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 | @Override public void onClick(View v) { if (v.getId() == R.id.button1) sendNotification(); } private void sendNotification() { Notification n = new Notification(); // Notificationの生成 n.icon = R.drawable.coda; // アイコンの設定 n.tickerText = "This is a notification message..." ; // メッセージの設定 Intent i = new Intent(getApplicationContext(), NotificationActivity. class ); PendingIntent pi = PendingIntent.getActivity( this , 0 , i, 0 ); n.setLatestEventInfo(getApplicationContext(), "TITLE" , "TEXT" , pi); long [] vibrate_ptn = { 0 , 100 , 300 , 1000 }; // 独自バイブレーションパターン n.vibrate = vibrate_ptn; // 独自バイブレーションパターンを設定 n.defaults |= Notification.DEFAULT_LIGHTS; // デフォルトLED点滅パターンを設定 // NotificationManagerのインスタンス取得 NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.notify( 1 , n); // 設定したNotificationを通知する } |
ボタンを押すとNotoficationが以下のようにステータスバー上に通知されます。
設定したアイコンなどの情報はNotificationの詳細画面に反映されます。
以上が基本的なNotificationの使い方になります。