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