Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MediaSession的Android磨损通知_Java_Android_Notifications_Wear Os - Fatal编程技术网

Java 使用MediaSession的Android磨损通知

Java 使用MediaSession的Android磨损通知,java,android,notifications,wear-os,Java,Android,Notifications,Wear Os,我想使用MediaSession制作一个android磨损通知,它在一个页面上有几个按钮,在另一个页面上有一些其他按钮。这看起来像是android wear上的Google Play Now应用程序通知。我在上个月学习了这个github教程 然而,每个动作都被添加到android wear上的一个单独页面中。我想把其中的一些分成一页。例如,在一页上显示播放/暂停、播放前和下一页,在第二页上显示“速率”按钮。我想知道,如果不使用MediaSession,就可以通过自定义通知实现这一点,以覆盖API

我想使用MediaSession制作一个android磨损通知,它在一个页面上有几个按钮,在另一个页面上有一些其他按钮。这看起来像是android wear上的Google Play Now应用程序通知。我在上个月学习了这个github教程

然而,每个动作都被添加到android wear上的一个单独页面中。我想把其中的一些分成一页。例如,在一页上显示播放/暂停、播放前和下一页,在第二页上显示“速率”按钮。我想知道,如果不使用MediaSession,就可以通过自定义通知实现这一点,以覆盖API小于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传递令牌时,setMediaSession给出了此编译错误:NotificationCompat.MediaStyle类型中的方法SetMediaSessionCompat.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中添加的一个功能是-这为您提供了一种向后兼容的方式来构建媒体通知并将媒体信息传递给Android 5.0+设备,同时为旧设备上的Android Wear提供信息(以及在API14-19设备上添加锁屏控件)


当您生成通知时,至关重要的是打电话告知Android Wear您的通知已连接到媒体播放,从而为您提供单卡式通知的4个操作。

请检查我的更新问题。我尝试了你的建议,但android wear上的3个不同页面上显示了3个动作。android wear将播放/暂停/上一步/下一步按钮从你的
MediaSessionCompat
@ianhanniballake中拉出-你能帮我如何隐藏磨损通知吗。我不希望Android wear从
MediaSessionCompat
中获取播放状态。我有一个自定义通知触发从磨损应用程序。我不使用
MediaStyle
notification有什么原因你不使用它来代替它吗?相同的API,但也向后兼容。