fix: replace non-existent MediaSession.Callback skip overrides with onPlayerCommandRequest

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-06-05 00:07:14 +02:00
1 parent d539a43307
commit 3252706dc2
1 file changed
+19 -12
@@ -19,7 +19,6 @@ import androidx.media3.session.CacheBitmapLoader
import androidx.media3.session.MediaSession
import androidx.media3.session.MediaSessionService
import com.google.common.util.concurrent.MoreExecutors
import com.google.common.util.concurrent.Futures
import java.util.concurrent.Executors
class MusicService : MediaSessionService() {
@@ -113,17 +112,25 @@ class MusicService : MediaSessionService() {
.setSessionActivity(notifTapPending)
.setCallback(object : MediaSession.Callback {
// Intercept notification next/prev so JS (not ExoPlayer) handles queue logic.
override fun onSkipToNextMediaItem(
session: MediaSession, controller: MediaSession.ControllerInfo
) = Futures.immediateFuture(androidx.media3.session.SessionResult(
androidx.media3.session.SessionResult.RESULT_SUCCESS
)).also { stateListener?.onSkipToNext() }
override fun onSkipToPreviousMediaItem(
session: MediaSession, controller: MediaSession.ControllerInfo
) = Futures.immediateFuture(androidx.media3.session.SessionResult(
androidx.media3.session.SessionResult.RESULT_SUCCESS
)).also { stateListener?.onSkipToPrevious() }
// With single-track model ExoPlayer has no queue to advance — block the command
// and delegate to JS instead.
override fun onPlayerCommandRequest(
session: MediaSession,
controller: MediaSession.ControllerInfo,
playerCommand: Int
): Int = when (playerCommand) {
Player.COMMAND_SEEK_TO_NEXT,
Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM -> {
stateListener?.onSkipToNext()
androidx.media3.session.SessionResult.RESULT_ERROR_NOT_SUPPORTED
}
Player.COMMAND_SEEK_TO_PREVIOUS,
Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM -> {
stateListener?.onSkipToPrevious()
androidx.media3.session.SessionResult.RESULT_ERROR_NOT_SUPPORTED
}
else -> androidx.media3.session.SessionResult.RESULT_SUCCESS
}
})
.build()