繁体   English   中英

带有MediaSession的Android Wear通知

[英]Android Wear Notification with MediaSession

我想使用MediaSession发出一个android磨损通知,该通知在一页上有多个按钮,而在另一页上有一些其他按钮。 看起来像是Android Wear上的Google Play Now App通知。 我在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() );
}

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

生成MediaStyle通知时,至关重要的是调用setMediaSession() ,该通知告诉Android Wear您的通知已附加到媒体播放中,从而使您对单个卡片样式通知执行4操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM