【问题标题】:Android Wear Notification with MediaSession带有 MediaSession 的 Android Wear 通知
【发布时间】:2015-06-22 19:46:55
【问题描述】:

我想使用 MediaSession 制作一个 android 磨损通知,该通知在一个页面上有几个按钮,在另一个页面上有一些其他按钮。它看起来像 Android Wear 上的 Google Play Now 应用通知。我在https://github.com/PaulTR/AndroidDemoProjects/blob/master/MediaSessionwithMediaStyleNotification/app/src/main/java/com/ptrprograms/mediasessionwithmediastylenotification/MediaPlayerService.java

关注了这个 github 教程

但是,每个动作都被添加到 android wear 的单独页面中。我想将其中一些分组到一页中。例如,播放/暂停、前一页和下一页以及第二页上的速率按钮。我想知道是否可以在不使用 MediaSession 的情况下通过自定义通知来实现这一点,以便涵盖小于 21 的 API。

谢谢!

private void buildNotification( Notification.Action action ) {
            Notification.MediaStyle style = new Notification.MediaStyle();

            Intent intent = new Intent( getApplicationContext(), MediaPlayerService.class );
            intent.setAction( ACTION_STOP );
            PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 1, intent, 0);
            Notification.Builder builder = new Notification.Builder( this )
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle( "Media Title" )
                    .setContentText( "Media Artist" )
                    .setDeleteIntent( pendingIntent )
                    .setStyle(style);

            builder.addAction( generateAction( android.R.drawable.ic_media_previous, "Previous", ACTION_PREVIOUS ) );
            builder.addAction( generateAction( android.R.drawable.ic_media_rew, "Rewind", ACTION_REWIND ) );
            builder.addAction( action );
            builder.addAction( generateAction( android.R.drawable.ic_media_ff, "Fast Foward", ACTION_FAST_FORWARD ) );
            builder.addAction( generateAction( android.R.drawable.ic_media_next, "Next", ACTION_NEXT ) );
            style.setShowActionsInCompactView(0,1,2,3,4);

            NotificationManager notificationManager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE );
            notificationManager.notify( 1, builder.build() );
    }

更新的代码:当我向 setMediaSession 传递一个令牌时,它给出了这个编译错误:NotificationCompat.MediaStyle 类型中的方法 setMediaSession(MediaSessionCompat.Token) 不适用于参数 (MediaSession.Token)。这 3 个动作仍然显示在 android wear 的 3 个单独页面上。

private void buildNotification( Notification.Action action ) {
    NotificationCompat.MediaStyle style = new NotificationCompat.MediaStyle();
    //style.setMediaSession(mSession.getSessionToken());            
    style.setMediaSession(null);            
    style.setShowActionsInCompactView(1,2);

    Bitmap icon = BitmapFactory.decodeResource(this.getResources(), R.drawable.pinkfloyd);

    NotificationCompat.Builder builder = new NotificationCompat.Builder( this );
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setLargeIcon(icon);
    builder.setContentTitle( "Media Title" );
    builder.setContentText( "Media Artist" );
    builder.setColor(Color.argb(0, 60, 13, 77));
    builder.setStyle(style);

    builder.addAction(R.drawable.ic_launcher,
            "Test1 ", null);
    builder.addAction(R.drawable.ic_launcher,
            "Test2 ", null);
    builder.addAction(R.drawable.ic_launcher,
            "Test3 ", null);
    NotificationManager notificationManager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE );
    notificationManager.notify( 1, builder.build() );
}

【问题讨论】:

标签: java android notifications wear-os


【解决方案1】:

AppCompat v22.2.0 中添加的一项功能是 NotificationCompat.MediaStyle - 这为您提供了一种向后兼容的方式来构建媒体通知并将媒体信息传递到 Android 5.0+ 设备,与 MediaSessionCompat 一起工作以向旧版本的 Android Wear 提供信息设备(以及在 API14-19 设备上添加锁屏控件)。

当您构建MediaStyle 通知时,调用setMediaSession() 至关重要,它会告诉Android Wear 您的通知已附加到媒体播放,从而为您提供单卡式通知的4 项操作。

【讨论】:

  • 请检查我更新的问题。我尝试了您的建议,但 3 个操作显示在 android wear 的 3 个不同页面上。
  • Android Wear 将播放/暂停/上一个/下一个按钮从您设置的PlaybackStateCompat 拉到您的MediaSessionCompat
  • @ianhanniballake - 你能帮我如何隐藏磨损通知吗?我不希望 Android wear 从 MediaSessionCompat 中提取播放状态。我有一个从磨损应用程序触发的自定义通知。我不使用MediaStyle 通知
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多