Android Wearの通知にページを追加する

さて、今日は通知にページを追加する方法です。

昨日までの記事は以下になります。

それではこちらを翻訳しながら理解を深めていきましょう。

Adding Pages to a Notification

通知にページを追加する


携帯デバイス上でアプリケーションを開くことなく、より多くの情報を提供したい場合には、Android Wearの通知に1つ以上のページを追加することが出来ます。
追加ページはメインの通知カードの右側に表示されます。複数ページをデザインするための情報は Design Principles of Android Wearを参照して下さい。

複数ページを持つ通知を作成する場合、携帯デバイスまたはタブレット上に表示するメインとなる(最初のページとなる)通知を作成することから始めます。次に、addPage()メソッドで1つのページ追加するか、addPage()メソッドでコレクション内の複数ページを追加します。

例として、通知に2つ目のページを追加するコードを示します。

// メインとなる通知の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();

では実際に実行してみましょう。
昨日作成したアプリケーションに追加してみましょう。ボタンをおした時の処理を以下のように修正します。

        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);
            }
        });

それでは実行してみましょう。左にスワイプすると、ページが増えていることが確認できると思います。

notificationsampleapp

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です