しかし、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