上周看到这个问题,用下面的代码解决了
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()
);
像下面这样添加通知代码,或者只为 MediaStyle 添加.setMediaSession(mediaSession.getSessionToken()))
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();