Android NowPlaying MediaSession 锁屏(三星)

Android NowPlaying MediaSession Lock Screen (Samsung)

我正在开发基于 ExoPlayer 的音频应用程序,我已经为通知中心和锁定屏幕中的 NowPlaying 栏实现了 MediaSession 控件。

通知中心的 NowPlaying 栏在每个 phone 上都有效,但在某些三星 phones (Android 11) 上,NowPlaying 栏在锁定屏幕上不可见.

有人知道如何解决这个问题吗? 我已经尝试修复这个问题一个星期了,但没有任何效果...

我上周看到这个问题,用下面的代码解决了

MediaSessionCompat mediaSession = new MediaSessionCompat(this, MEDIA_SESSION_TAG);
    mediaSession.setActive(true);
    mediaSession.setMetadata(
            new MediaMetadataCompat.Builder()
                    .putString(MediaMetadata.METADATA_KEY_TITLE, title)
                    .putString(MediaMetadata.METADATA_KEY_ARTIST, author)
                    .build()
    );

添加如下通知代码或仅添加 .setMediaSession(mediaSession.getSessionToken())) for MediaStyle

Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
            .addAction(iconFavorite, "favorite", pendingFavoriteIntent)
            .addAction(R.drawable.ic_notification_prev, "prev", pendingPrevIntent)
            .addAction(iconPlayPause, titlePlayPause, pendingToggleIntent)
            .addAction(R.drawable.ic_notification_next, "next", pendingNextIntent)
            .addAction(R.drawable.ic_close, "cancel", pendingCancelIntent)
            .setStyle(new androidx.media.app.NotificationCompat.MediaStyle()
                    .setShowActionsInCompactView(1, 2, 3)
                    .setShowCancelButton(true)
                    .setMediaSession(mediaSession.getSessionToken()))
            .setSmallIcon(R.drawable.ic_notification_play)
            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
            .setVibrate(new long[]{0L})
            .setPriority(NotificationCompat.PRIORITY_MAX)
            .setContentTitle(title)
            .setContentText(author)
            .setSubText(title)
            .setContentIntent(selectPendingIntent)
            .setLargeIcon(bm)
            .build();