しかし、AndroidWearへNotificationを表示するには、NotificationManagerCompatのnotifyで表示しなければならないし、onGoingを設定しているとAndroidWear側にNotificationが表示されないという仕様になっています。
これを解決するためには、簡単な方法としてはAndroidWear側用のNotificationを別途作成する方法が考えられます。あとはAndroidWear専用アプリを作るという方法もあるけど、今回はパスです。
しかしこうすると、Notificationが2つ表示されてしまうのですが、これはAndroidWear側とMobile側のNotificationをGroup化することで回避できます。
これに気づくに少し時間がかかりました。
Mobile側
Intent actionIntent = new Intent(mMediaPlayerService.getApplicationContext(), MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(mMediaPlayerService.getApplicationContext(),
0, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT);
// Notificationの生成
NotificationCompat.Builder builder = new NotificationCompat.Builder(
mMediaPlayerService.getApplicationContext());
//ステータスバーアイコン
builder.setSmallIcon(R.drawable.ic_stat_playing);
// trueで常に通知領域に表示
builder.setOngoing(true);
// 通知領域に初期表示時のメッセージを設定
if (ticker != null) {
builder.setTicker(ticker);
}
builder.setContentIntent(pi);
//Group設定
builder.setGroup(mMediaPlayerService.getString(R.string.app_name));
builder.setGroupSummary(true);
Wear側
NotificationCompat.Builder wearBuilder = new NotificationCompat.Builder(
mMediaPlayerService.getApplicationContext());
wearBuilder.setSmallIcon(R.drawable.ic_stat_playing);
wearBuilder.setOngoing(false);
//Group設定
wearBuilder.setGroup(mMediaPlayerService.getString(R.string.app_name));
wearBuilder.setGroupSummary(false);
こんな感じです、あとsetContentIntentしちゃうと、Wear側に端末で開くっていう余計なActionがついてくるので上記サンプルではあえて設定していません。
下記の画像はAndroidWearに追加されたNotificationです。
VolumeUp,VolumeDownは個人的に僕がほしい機能でした。
アイコンはまだ設定していませんが、そのうち。。。
Muteも入れたいと思っています。






No comments:
Post a Comment