ノーティフィケーション利用の最大のポイントは、もちろんNotificationクラスです。これは、インスタンスを作成し、各種のプロパティを設定して
NotificationManagerに登録する、という流れになっていました。
先のサンプルでは、挙動に関するフラグ設定、アイコンといったものだけを指定しましたが、この他にもプロパティはいろいろと用意されています。重要なものについてここで整理しておきましょう。
flagプロパティ先ほどはサラっと流しましたが、これはint値のプロパティで、あらかじめ用意されているクラスフィールドを使って値を指定します。以下のようなものが用意されています。
FLAG_AUTO_CANCEL――自動的にキャンセルされる
FLAG_NOCLEAR――選んでも消えない
FLAG_FOREGROUND――フォアグラウンドで機能する
FLAG_INSISTENT――サウンドなどを繰り返し強調する
FLAG_ONGOING_EVENT――On Going(実行中)の中にグループ化する
FLAG_ONLY_ALERT_ONCE――サウンドやバイブレーションなどは1度だけ
FLAG_SHOW_LIGHTS――デフォルトのライト使用
FLAG_HIGH_PRIORITY――ハイプライオリティ(高優先度で)
tickerTextプロパティステータスバーに右から左に流れるメッセージ(ティッカーテキスト)を設定するものです。表示させるメッセージのテキストを指定します。
ledARGBプロパティ LED点灯時の色を指定するためのものです。ノーティフィケーションが表示されるとき、LEDを指定の色で点灯させます。値は、ARGB各輝度を16進数で指定します。例えば、「
0xffff0000」と値を指定すれば赤になります。これは、
flagに
FLAG_SHOW_LIGHTSが設定されていないと表示されないので注意してください。
ledOnMS/ledOffMSプロパティLEDの点滅時間を指定するものです。
ledOnMSは点灯している時間、
ledOffMSは消えている時間を指定するもので、いずれもミリ秒換算の整数で指定します。これも
flagに
FLAG_SHOW_LIGHTSが設定されている必要があります。
soundプロパティノーティフィケーションを表示する際に再生するサウンドを指定するものです。これは、再生するサウンドファイルのパスを指定したUriインスタンスで設定をします。デフォルトの警告音をそのまま鳴らすなら、
android.provider.Settings.System.DEFAULT_NOTIFICATION_URIを指定します。
vibrateプロパティバイブレーションの指定を行うものです。これは、OFFとONの時間をミリ秒で表したint配列を用意し設定します。また、バイブレーションを利用するためには、
AndroidManifest.xmlの
<manifest>タグの中に、以下のタグを追記します。
<uses-permission android:name="android.permission.VIBRATE" />
これらのプロパティを使うことで、LEDやバイブレーション、サウンドなどをノーティフィケーションで利用することができます。下に、簡単な利用例を挙げておきました。これで緑色でLEDを点滅させることができるはずです。
public void doAction(View view){
Intent intent = new Intent(this,jp.tuyano.sample.MySampleActivity.class);
PendingIntent pending = PendingIntent.getActivity(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
Notification notify = new Notification();
notify.flags = Notification.FLAG_AUTO_CANCEL;
notify.icon = R.drawable.icon;
notify.ledARGB = 0xff00ff00;
notify.ledOnMS = 500;
notify.ledOffMS = 500;
notify.setLatestEventInfo(this, "TEST INFO",
"テストのノーティフィケーションです。", pending);
NotificationManager manager = (NotificationManager)this.
getSystemService(Activity.NOTIFICATION_SERVICE);
manager.notify(0, notify);
}