さて、今日は通知にページを追加する方法です。
昨日までの記事は以下になります。
- GoogleがスマートウォッチOS “Android Wear” を発表したのでテスターになってみた
- Android Wearで通知から音声入力を受け取る
- Android WearでRemoteInputを使って通知から音声入力を受け取るとろこまで試してみる
それではこちらを翻訳しながら理解を深めていきましょう。
Adding Pages to a Notification
通知にページを追加する
携帯デバイス上でアプリケーションを開くことなく、より多くの情報を提供したい場合には、Android Wearの通知に1つ以上のページを追加することが出来ます。
追加ページはメインの通知カードの右側に表示されます。複数ページをデザインするための情報は Design Principles of Android Wearを参照して下さい。
複数ページを持つ通知を作成する場合、携帯デバイスまたはタブレット上に表示するメインとなる(最初のページとなる)通知を作成することから始めます。次に、addPage()メソッドで1つのページ追加するか、addPage()メソッドでコレクション内の複数ページを追加します。
例として、通知に2つ目のページを追加するコードを示します。
[java]
// メインとなる通知のBuilderを作成します。
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.new_message)
.setContentTitle("Page 1")
.setContentText("Short message")
.setContentIntent(viewPendingIntent);
// BigTextStyleの2つ目のページを作成します。
BigTextStyle secondPageStyle = new NotificationCompat.BigTextStyle();
secondPageStyle.setBigContentTitle("Page 2")
.bigText("A lot of text…");
// 2つ目のページの通知を作成します。
Notification secondPageNotification =
new NotificationCompat.Builder(this)
.setStyle(secondPageStyle)
.build();
// メインとなる通知を作成し2つ目のページを追加します。
Notification twoPageNotification =
new WearableNotifications.Builder(notificationBuilder)
.addPage(secondPageNotification)
.build();
[/java]
では実際に実行してみましょう。
昨日作成したアプリケーションに追加してみましょう。ボタンをおした時の処理を以下のように修正します。
[java]
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int notificationId = 001;
String EXTRA_VOICE_REPLY = "extra_voice_reply";
// 返信アクションのインテントを作成
Intent replyIntent = new Intent(getApplicationContext(), ReplyActivity.class);
PendingIntent replyPendingIntent =
PendingIntent.getActivity(getApplicationContext(), 0, replyIntent, 0);
// メインとなる通知の作成
NotificationCompat.Builder replyNotificationBuilder =
new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(android.R.drawable.ic_dialog_email)
.setContentTitle("embossさんからメッセージ")
.setContentText("I love KitKat!")
.setContentIntent(replyPendingIntent);
// BigTextStyleの2つ目のページを作成します。
NotificationCompat.BigTextStyle secondPageStyle = new NotificationCompat.BigTextStyle();
secondPageStyle.setBigContentTitle("Page 2")
.bigText("A lot of text…");
// 2つ目のページの通知を作成します。
Notification secondPageNotification =
new NotificationCompat.Builder(getApplicationContext())
.setStyle(secondPageStyle)
.build();
// 定義済みテキストよる返答を追加
String replyLabel = getResources().getString(R.string.reply_label);
String[] replyChoices = getResources().getStringArray(R.array.reply_choices);
// リモート入力の作成
RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
.setLabel(replyLabel)
.setChoices(replyChoices)
.build();
// ウェアラブル通知の作成とリモート入力の追加
// メインとなる通知を作成し2つ目のページを追加します。
Notification replyNotification =
new WearableNotifications.Builder(replyNotificationBuilder)
.addRemoteInputForContentIntent(remoteInput)
.addPage(secondPageNotification)
.build();
// NotificationManagerサービスのインスタンスを取得します
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(getApplicationContext());
// 通知マネージャーで通知を作成し発行します
notificationManager.notify(notificationId, replyNotification);
}
});
[/java]
それでは実行してみましょう。左にスワイプすると、ページが増えていることが確認できると思います。