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:
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()
|
||||
|
||||
|
||||
Reference in new issue
Block a user