Android WearのためのNotificationを作る

2014/3/21 6612hit

お知らせ
このセッションは開発者プレビューのための古い情報です。正式版については
ウェアラブル向けアプリを作る 目次を見てください

目次

Android Wear
Android Wear Developer Previewを始めよう
Android Wear UI概要
Android Wear デザイン原則
>Android WearのためのNotificationを作る
Android Wear Notificationから音声入力を受信する
Android Wear NotificationにPagesを追加する
Android Wear NotificationをStackする
Android Wear Notificationリファレンス(英語)
ライセンス規約(英語)

原文

Android WearのためのNotificationを作る

Androidウェアラブルと接続された電話やタブレットなどのAndroidデバイスは全てのNotificationがデフォルトで共有されます。各Notificationはcontext streamの新しいCardとして表示されます。


そのため、一切手間をかけることなくあなたのアプリのNotificationがAndroid Wear上で利用可能です。しかしいくつかのユーザーエクスペリエンスを強化する方法があります。具体的には、メッセージを返信するためなどにテキストを入力してNotificationに答えたいと言う場合、wearableから直接音声入力でユーザーに返信させる機能を追加することが出来ます。

あなたのNotificationがAndroid Wear上で最高のユーザーエクスペリエンスを提供できるように、このガイドではNotificationCompat.BuilderAPIに含まれる標準テンプレートを使ってどうやってNotificationを作るかに加えて、ウェアラブルユーザーエクスペリエンスのために、どうやってNotificationの機能を拡張するかについて紹介します。

ノート Notificationで使用しているRemoteViewsはカスタムレイアウトを使用することが出来ません。加えてシステムはCard内のNotificationにNotification(翻訳中) objectのテキストとアイコンのみを使用します。しかしながら、後日公開予定の公式Android Wear SDKではカスタムCardレイアウトをサポートする予定です。

必要なclassのimport

開発を開始するにあたってまず始めにAndroid Wear Developer Previewを始めようの説明に従って手順を完了させてください。その中では、v4 support libraryとDeveloper Preview support libraryをそれぞれインクルードしています。そこで、プロジェクトのコードに下記importを含めましょう。

import android.preview.support.wearable.notifications.*;
import android.preview.support.v4.app.NotificationManagerCompat;
import android.support.v4.app.NotificationCompat;


注意:現在のAndroid Wear Developer Previewは開発とテスト目的のみでの使用を意図しています。製品アプリでは使用しないでください。GoogleはAndroid Wear SDKの公式なリリースに置いて大幅な変更を行う可能性があります。あなたはこのDeveloper Previewを使用したいかなるアプリケーションも配布したり出荷してはいけません。Developer Previewは公式SDKがリリースされたらもうサポートされることはありません。(Developer Previewのみで動くアプリは壊れてしまうでしょう)

Notification Builderを使ってNotificationを作る

v4 support libaryを使うとAndroid1.6(API level4)以上との互換性を保ったまま、アクションボタンやlargeアイコンなどの最新機能を使うことが出来ます。

例えば、これはNotificationCompatAPIを新しいNotificationManagerCompatAPIと組み合わせてnotificationを作成し出力するコード例です。

int notificationId = 001;
// notification contentでIntentを作る
Intent viewIntent = new Intent(this, ViewEventActivity.class);
viewIntent.putExtra(EXTRA_EVENT_ID, eventId);
PendingIntent viewPendingIntent = PendingIntent.getActivity(this, 0, viewIntent, 0);

NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_event)
.setContentTitle(eventTitle)
.setContentText(eventLocation)
.setContentIntent(viewPendingIntent);

// NotificationManager serviceのインスタンスを取得する
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

// Notification managerを使ってNotificationを作って出力する。
notificationManager.notify(notificationId, notificationBuilder.build());

このときNotificationは携帯デバイス上に表示されます。ユーザーはNotificationにタップしてsetContentIntent()で定義したPendingIntentを実行できます。
同時にこのNotificationはAndroid Wearable上にも表示され、ユーザーはNotificationを左方向にスワイプしてActionを開き、携帯デバイス上のintentを実行できます。

アクションボタンの追加


setContentIntent()で追加したプライマリコンテンツアクションに加えて、addAction()メソッドでPendingIntentによるアクションを追加できます。

例えば、下記のコードは上のコードと同じタイプのNotificationを表示しますが、地図上でイベントの場所を見ることができるActionが追加されます。

// 地図を見るアクションのためのIntentを構築する
Intent mapIntent = new Intent(Intent.ACTION_VIEW);
Uri geoUri = Uri.parse("geo:0,0?q=" + Uri.encode(location));
mapIntent.setData(geoUri);
PendingIntent mapPendingIntent =
PendingIntent.getActivity(this, 0, mapIntent, 0);

NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_event)
.setContentTitle(eventTitle)
.setContentText(eventLocation)
.setContentIntent(viewPendingIntent)
.addAction(R.drawable.ic_map,
getString(R.string.map), mapPendingIntent);

携帯デバイス上ではNotificationに追加でボタンとしてアクションが表示されます。Android Wear上ではユーザーがNotificationを左にスワイプすると大きなボタンとしてアクションが表示されます。ユーザーがアクションをタップすると、携帯デバイス上で関連したIntentが実行されます。

Tip Notificationに「Reply」アクション(メッセージングアプリなど)が含まれているなら、直接Android Wearableから音声入力による返信を有効にすることで振る舞いを改善することが出来ます。より多くの情報はAndroid Wear Notificationから音声入力を受信するを見てください。

(アイコンについてを含む)アクションボタンの詳細はAndroid Wear デザイン原則を見てください。

Big Viewの追加


あなたのNotificationに"big view"スタイルの一つを加えることで、拡張テキストコンテンツをNotificationに挿入できます。携帯デバイス上では、ユーザーはNotificationを拡張することでbig viewのコンテンツを見ることができます。Android Wear上ではbig viewのコンテンツが標準で表示されます。

Notificationに拡張コンテンツを追加するためにNotificationCompat.Builderオブジェクト上で setStyle()を呼びBigTextStyleあるいはInboxStyleのいずれかのインスタンスを渡してください。

例えば、以下のコードはBigTextStyleのインスタンスをイベントnotificationに追加して、イベントの完全な詳細をNotificationに含めます。(setContentText()で用意されたスペースよりも多くのテキストを含むことが出来ます)

// ’big view’を指定してコンテンツに長いイベントの詳細を表示しています 通常のcontent textには収まらないかもしれません
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);

NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_event)
.setLargeIcon(BitmapFractory.decodeResource(
getResources(), R.drawable.notif_background))
.setContentTitle(eventTitle)
.setContentText(eventLocation)
.setContentIntent(viewPendingIntent)
.addAction(R.drawable.ic_map,
getString(R.string.map), mapPendingIntent)
.setStyle(bigStyle); //スタイルを指定

setLargeIcon()メソッドを使ってnotificationにlarge background imageを追加できることに注意してください。large imageを使ったNotificationのデザインについてのより詳細はAndroid Wear デザイン原則を見てください。

Wearableのための新機能を追加する

Android Wear preview support libraryはWearableデバイス上でのNotificationでユーザーエクスペリエンスを強化できる新しいAPIを提供します。たとえば、左方向へのスワイプで見ることができる追加Pagesや、ユーザーが音声入力を使ってアプリにテキストでの返信を送ることが出来る機能を追加できます。

これら新しいAPIを使うために、NotificationCompat.BuilderのインスタンスをWearableNotifications.Builder()のコンストラクタに渡してください。
WearableNotifications.Builder()メソッドを使用してNotificationに新機能を追加することが出来ます。
例:

// 標準的なNotification機能のためにNotificationCompat.Builderを作る
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(mContext)
.setContentTitle("New mail from " + sender.toString())
.setContentText(subject)
.setSmallIcon(R.drawable.new_mail);

// Wearableに特化した新機能のために WearablesNotification.Builderを作る
Notification notification =
new WearableNotifications.Builder(notificationBuilder)
.setHintHideIcon(true)
.build();

setHintHideIcon()メソッドはNotification cardからあなたのアプリのアイコンを取り除きます。
このメソッドはWearableNotifications.Builder()クラスにより利用可能になるNotificationの追加機能の一つです。

Notificationを加えたいとき確実にNotificationManagerCompat APIを使用してください。

// NotificationManager serviceのインスタンスを取得
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);

// NotificationManagerを使ってNotificationを作り届ける
notificationManager.notify(notificationId, notification);

もし、フレームワークがNotification Managerを使用していたら、いくつかのWearableNotifications.Builderによる新機能は動作しません。

WearableNotifications.Builderやpreview support libraryで追加されるその他APIを使ってNotificationの改良を続けるために以下のデベロッパーガイドを見てください。

Android Wear Notificationから音声入力を受信する
 ユーザーから音声入力を受け取る機能を追加しアプリにメッセージを届ける
Android Wear Notificationにページを追加する
 ユーザーが左にスワイプしたときに表示できるPagesを追加する
Android Wear NotificationをStackする
 あなたのアプリから渡される同類のNotirficationをStackにまとめる。複数のCardをCard Streamに加えることなくそれぞれのCardを見ることができるようになる。



こちらも見ておいた方が良いでしょう

Notifying the User
notificationを作ることについてより多くを学ぶ
Intents and Intent Filters
Notificationアクションで使われているIntentAPIについてあなたが知っておくべきすべて


Except as noted, this content is licensed under Creative Commons Attribution 2.5. For details and restrictions, see the Content License

前:Android Wear デザイン原則 次:Android Wear Notificationから音声入力を受信する

関連キーワード

[Android][Java][モバイル][IT][翻訳][ウェアラブル]

コメントを投稿する

名前URI
コメント