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.MediaSession
|
||||||
import androidx.media3.session.MediaSessionService
|
import androidx.media3.session.MediaSessionService
|
||||||
import com.google.common.util.concurrent.MoreExecutors
|
import com.google.common.util.concurrent.MoreExecutors
|
||||||
import com.google.common.util.concurrent.Futures
|
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
class MusicService : MediaSessionService() {
|
class MusicService : MediaSessionService() {
|
||||||
@@ -113,17 +112,25 @@ class MusicService : MediaSessionService() {
|
|||||||
.setSessionActivity(notifTapPending)
|
.setSessionActivity(notifTapPending)
|
||||||
.setCallback(object : MediaSession.Callback {
|
.setCallback(object : MediaSession.Callback {
|
||||||
// Intercept notification next/prev so JS (not ExoPlayer) handles queue logic.
|
// Intercept notification next/prev so JS (not ExoPlayer) handles queue logic.
|
||||||
override fun onSkipToNextMediaItem(
|
// With single-track model ExoPlayer has no queue to advance — block the command
|
||||||
session: MediaSession, controller: MediaSession.ControllerInfo
|
// and delegate to JS instead.
|
||||||
) = Futures.immediateFuture(androidx.media3.session.SessionResult(
|
override fun onPlayerCommandRequest(
|
||||||
androidx.media3.session.SessionResult.RESULT_SUCCESS
|
session: MediaSession,
|
||||||
)).also { stateListener?.onSkipToNext() }
|
controller: MediaSession.ControllerInfo,
|
||||||
|
playerCommand: Int
|
||||||
override fun onSkipToPreviousMediaItem(
|
): Int = when (playerCommand) {
|
||||||
session: MediaSession, controller: MediaSession.ControllerInfo
|
Player.COMMAND_SEEK_TO_NEXT,
|
||||||
) = Futures.immediateFuture(androidx.media3.session.SessionResult(
|
Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM -> {
|
||||||
androidx.media3.session.SessionResult.RESULT_SUCCESS
|
stateListener?.onSkipToNext()
|
||||||
)).also { stateListener?.onSkipToPrevious() }
|
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()
|
.build()
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user