【问题标题】:MediaStyle notification is not responding to RemoteControl events.MediaStyle 通知未响应 RemoteControl 事件。
【发布时间】:2014-11-21 02:08:47
【问题描述】:

我们正在将正在进行的播放通知迁移到 Lollipop 中引入的 MediaStyle 通知。 RemoteControlClient 似乎已被弃用,并且 MediaStyle 通知未处理媒体按钮事件(例如通过耳机遥控器暂停/播放)。

有人得到这个作品吗?没有调用 MediaSessionCallback 中的任何事件。

这是媒体会话的初始化方式

    mSession = new MediaSessionCompat(this, TAG);
    mSession.setCallback(new MediaSessionCallback());
    mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
    mSession.setPlaybackToLocal(AudioManager.STREAM_MUSIC);
    mSession.setActive(true);

这是元数据的设置方式

    MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder();
    metadataBuilder
            .putLong(MediaMetadata.METADATA_KEY_DURATION, clip.getDuration())
            .putString(MediaMetadata.METADATA_KEY_MEDIA_ID, clip.getClipId())
            .putString(MediaMetadata.METADATA_KEY_TITLE, clip.getTitle())
            .putString(MediaMetadata.METADATA_KEY_ARTIST, clip.getSourceName())
            .putString(MediaMetadata.METADATA_KEY_ALBUM_ART_URI, clip.getImageUrl())
            .putLong(MediaMetadata.METADATA_KEY_DURATION, clip.getDuration());
    mSession.setMetadata(metadataBuilder.build());

最后是通知代码:

        MediaSession mediaSession = (MediaSession) session.getMediaSession();
        Notification.Builder builder =
                new Notification.Builder(c)
                        .setDefaults(0)
                        .setSmallIcon(R.drawable.ic_notif)
                        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                        .setContentTitle(clip.getTitle())
                        .setContentText(clip.getSourceName())
                        .setProgress((int)duration, (int)progress, false)
                        .setWhen(0)
                        .setContentIntent(pendingIntent);

        if (playing) {
            builder.addAction(R.drawable.ic_media_pause, c.getString(R.string.media_pause),
                    getPendingIntentForKeyCode(app.getApplicationContext(), KeyEvent.KEYCODE_MEDIA_PAUSE));
        } else {
            builder.addAction(R.drawable.ic_media_play, c.getString(R.string.media_play),
                    getPendingIntentForKeyCode(app.getApplicationContext(), KeyEvent.KEYCODE_MEDIA_PLAY));
        }
        builder.addAction(R.drawable.ic_media_next, c.getString(R.string.media_next),
                    getPendingIntentForKeyCode(app.getApplicationContext(), KeyEvent.KEYCODE_MEDIA_NEXT));

        builder.setStyle(new Notification.MediaStyle()
                .setMediaSession(mediaSession.getSessionToken())
                .setShowActionsInCompactView(new int[] {1, 2})
                )
        );

        notification = builder.build();

【问题讨论】:

    标签: android android-5.0-lollipop


    【解决方案1】:

    使用您支持的操作在您的 MediaSession 中设置播放状态:

    PlaybackState state = new PlaybackState.Builder()
            .setActions(
                    PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE |
                    PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PAUSE |
                    PlaybackState.ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_SKIP_TO_PREVIOUS)
            .setState(PlaybackState.STATE_PLAYING, position, speed, SystemClock.elapsedRealtime())
            .build();
    mSession.setPlaybackState(state);
    

    【讨论】:

    • 对于 Compat 库,它应该类似于: PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder(); stateBuilder.setActions(PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE | PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_SKIP_TO_PREVIOUS); stateBuilder.setState(PlaybackState.STATE_PLAYING, 0, 1); m_objMediaSession.setPlaybackState(stateBuilder.build());
    • ^ 稍作修正,应该是PlaybackStateCompat.ACTION_PLAY
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多