Я работаю с библиотеками androidx.media3 и разрабатываю сервис на основе MediaSessionService. В своем колбеке MediaSessionCallback, я пытаюсь обработать запрос на изменение рейтинга медиа:
override fun onSetRating(
session: MediaSession,
controller: ControllerInfo,
rating: Rating
): ListenableFuture<SessionResult> {
val item = session.player.currentMediaItem
item?.let {
val metadata = it.mediaMetadata.buildUpon().setUserRating(rating).build()
val mediaItem = it.buildUpon().setMediaMetadata(metadata).build()
session.player.setMediaItem(mediaItem, false)
}
return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS))
}
Всё работает, но звук на мгновение прерывается, что неудивительно, ведь я по сути устанавливаю в плеер новый трек. Вопрос в том, как просто обновить текущие метаданные в плеере? Или вопрос шире - как должна работать эта фича с рейтингом в MediaSession?