
Я точно выполнил эти инструкции, и мое уведомление не изменилось и выглядит вот так. Просто кнопка предыдущего трека:

Я прочитал это проблема, когда разработчик признает, что это сложно (и обещает задокументировать это, лол), но я не понимаю решения, которое он объясняет.
Я не использую PlayerNotificationManager .
Вот что у меня пока что не работает. В моем PlaybackService:
Код: Выделить всё
private val back = CommandButton.Builder()
.setEnabled(true)
.setIconResId(androidx.media3.session.R.drawable.media3_notification_seek_back)
.setDisplayName("Seek Back")
.setPlayerCommand(Player.COMMAND_SEEK_BACK)
.build()
private val forward = CommandButton.Builder()
.setEnabled(true)
.setIconResId(androidx.media3.session.R.drawable.media3_notification_seek_forward)
.setDisplayName("Seek Forward")
.setPlayerCommand(Player.COMMAND_SEEK_FORWARD)
.build()
private val buttons = ImmutableList.of(back, forward)
override fun onCreate() {
super.onCreate()
val intent = packageManager!!.getLaunchIntentForPackage(packageName)!!
.let { sessionIntent ->
PendingIntent.getActivity(this, SESSION_INTENT_REQUEST_CODE, sessionIntent, PendingIntent.FLAG_IMMUTABLE)
}
_session = MediaSession.Builder(this, buildPlayer())
.setSessionActivity(intent)
.setCustomLayout(buttons)
.setCallback(CustomMediaSessionCallback())
.build()
setListener(PlaybackServiceListener()) // irrelevant to this question
}
private inner class CustomMediaSessionCallback: MediaSession.Callback {
override fun onConnect(
session: MediaSession,
controller: MediaSession.ControllerInfo
): MediaSession.ConnectionResult {
val sessionCommands = MediaSession.ConnectionResult.DEFAULT_PLAYER_COMMANDS.buildUpon()
.add(back.playerCommand)
.add(forward.playerCommand)
.build()
return MediaSession.ConnectionResult.AcceptedResultBuilder(session)
.setCustomLayout(buttons)
.setAvailablePlayerCommands(sessionCommands)
.build()
}
}
Код: Выделить всё
private val sessionToken =
SessionToken(getApplication(), ComponentName(getApplication(), PlaybackService::class.java))
private val controllerFuture = MediaController.Builder(getApplication(), sessionToken).buildAsync()
Код: Выделить всё
with(controller!!) {
playWhenReady = true
setMediaItem(mediaItem)
prepare()
}
Я получаю предупреждение в logcat: «Не удалось найти уникальный зарегистрированный приемник медиа-кнопки в данном контексте». Я искал эту строку в репозитории media3, но она там не появилась.
Может ли кто-нибудь мне помочь? Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/787 ... tification