From 0ceec3ebb9f8ca26d5722103c00d15723b6fa656 Mon Sep 17 00:00:00 2001 From: christosts Date: Fri, 7 Oct 2022 16:07:50 +0000 Subject: [PATCH] MediaControllerImplBase: clean imports Remove static imports to constants and imports to intdefs, to make the code more readable. PiperOrigin-RevId: 479594144 (cherry picked from commit 36e12fbadb7b274f770a5904675493300c8fa89c) --- .../session/MediaControllerImplBase.java | 480 ++++++++---------- 1 file changed, 214 insertions(+), 266 deletions(-) diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java index 194d8f1fbc..c8bd52dc47 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java @@ -15,59 +15,6 @@ */ package androidx.media3.session; -import static androidx.media3.common.Player.COMMAND_ADJUST_DEVICE_VOLUME; -import static androidx.media3.common.Player.COMMAND_CHANGE_MEDIA_ITEMS; -import static androidx.media3.common.Player.COMMAND_PLAY_PAUSE; -import static androidx.media3.common.Player.COMMAND_PREPARE; -import static androidx.media3.common.Player.COMMAND_SEEK_BACK; -import static androidx.media3.common.Player.COMMAND_SEEK_FORWARD; -import static androidx.media3.common.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_DEFAULT_POSITION; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_MEDIA_ITEM; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_NEXT; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_PREVIOUS; -import static androidx.media3.common.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM; -import static androidx.media3.common.Player.COMMAND_SET_DEVICE_VOLUME; -import static androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEM; -import static androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEMS_METADATA; -import static androidx.media3.common.Player.COMMAND_SET_REPEAT_MODE; -import static androidx.media3.common.Player.COMMAND_SET_SHUFFLE_MODE; -import static androidx.media3.common.Player.COMMAND_SET_SPEED_AND_PITCH; -import static androidx.media3.common.Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS; -import static androidx.media3.common.Player.COMMAND_SET_VIDEO_SURFACE; -import static androidx.media3.common.Player.COMMAND_SET_VOLUME; -import static androidx.media3.common.Player.COMMAND_STOP; -import static androidx.media3.common.Player.DISCONTINUITY_REASON_INTERNAL; -import static androidx.media3.common.Player.DISCONTINUITY_REASON_REMOVE; -import static androidx.media3.common.Player.DISCONTINUITY_REASON_SEEK; -import static androidx.media3.common.Player.EVENT_AVAILABLE_COMMANDS_CHANGED; -import static androidx.media3.common.Player.EVENT_IS_LOADING_CHANGED; -import static androidx.media3.common.Player.EVENT_IS_PLAYING_CHANGED; -import static androidx.media3.common.Player.EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED; -import static androidx.media3.common.Player.EVENT_MEDIA_ITEM_TRANSITION; -import static androidx.media3.common.Player.EVENT_PLAYBACK_PARAMETERS_CHANGED; -import static androidx.media3.common.Player.EVENT_PLAYBACK_STATE_CHANGED; -import static androidx.media3.common.Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED; -import static androidx.media3.common.Player.EVENT_PLAYER_ERROR; -import static androidx.media3.common.Player.EVENT_PLAY_WHEN_READY_CHANGED; -import static androidx.media3.common.Player.EVENT_POSITION_DISCONTINUITY; -import static androidx.media3.common.Player.EVENT_REPEAT_MODE_CHANGED; -import static androidx.media3.common.Player.EVENT_SEEK_BACK_INCREMENT_CHANGED; -import static androidx.media3.common.Player.EVENT_SEEK_FORWARD_INCREMENT_CHANGED; -import static androidx.media3.common.Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED; -import static androidx.media3.common.Player.EVENT_TIMELINE_CHANGED; -import static androidx.media3.common.Player.EVENT_TRACKS_CHANGED; -import static androidx.media3.common.Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED; -import static androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED; -import static androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT; -import static androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_SEEK; -import static androidx.media3.common.Player.PLAYBACK_SUPPRESSION_REASON_NONE; -import static androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST; -import static androidx.media3.common.Player.STATE_BUFFERING; -import static androidx.media3.common.Player.STATE_ENDED; -import static androidx.media3.common.Player.STATE_IDLE; -import static androidx.media3.common.Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED; import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkIndex; import static androidx.media3.common.util.Assertions.checkNotNull; @@ -76,13 +23,6 @@ import static androidx.media3.common.util.Assertions.checkStateNotNull; import static androidx.media3.common.util.Util.usToMs; import static androidx.media3.session.MediaUtils.calculateBufferedPercentage; import static androidx.media3.session.MediaUtils.intersect; -import static androidx.media3.session.SessionCommand.COMMAND_CODE_CUSTOM; -import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING; -import static androidx.media3.session.SessionResult.RESULT_ERROR_PERMISSION_DENIED; -import static androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_DISCONNECTED; -import static androidx.media3.session.SessionResult.RESULT_ERROR_UNKNOWN; -import static androidx.media3.session.SessionResult.RESULT_INFO_SKIPPED; -import static androidx.media3.session.SessionToken.TYPE_SESSION; import static java.lang.Math.max; import static java.lang.Math.min; @@ -119,14 +59,9 @@ import androidx.media3.common.PlaybackException; import androidx.media3.common.PlaybackParameters; import androidx.media3.common.Player; import androidx.media3.common.Player.Commands; -import androidx.media3.common.Player.DiscontinuityReason; import androidx.media3.common.Player.Events; import androidx.media3.common.Player.Listener; -import androidx.media3.common.Player.MediaItemTransitionReason; -import androidx.media3.common.Player.PlayWhenReadyChangeReason; import androidx.media3.common.Player.PositionInfo; -import androidx.media3.common.Player.RepeatMode; -import androidx.media3.common.Player.TimelineChangeReason; import androidx.media3.common.Rating; import androidx.media3.common.Timeline; import androidx.media3.common.Timeline.Period; @@ -142,7 +77,6 @@ import androidx.media3.common.util.ListenerSet; import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; import androidx.media3.session.MediaController.MediaControllerImpl; -import androidx.media3.session.SessionCommand.CommandCode; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -229,7 +163,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; surfaceCallback = new SurfaceCallback(); serviceConnection = - (this.token.getType() == TYPE_SESSION) + (this.token.getType() == SessionToken.TYPE_SESSION) ? null : new SessionServiceConnection(connectionHints); flushCommandQueueHandler = new FlushCommandQueueHandler(applicationLooper); @@ -244,7 +178,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void connect(@UnderInitialization MediaControllerImplBase this) { boolean connectionRequested; - if (this.token.getType() == TYPE_SESSION) { + if (this.token.getType() == SessionToken.TYPE_SESSION) { // Session serviceConnection = null; connectionRequested = requestConnectToSession(connectionHints); @@ -269,12 +203,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void stop() { - if (!isPlayerCommandAvailable(COMMAND_STOP)) { + if (!isPlayerCommandAvailable(Player.COMMAND_STOP)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_STOP, + Player.COMMAND_STOP, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -301,11 +235,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; .positionInfo .positionMs)); - if (playerInfo.playbackState != STATE_IDLE) { + if (playerInfo.playbackState != Player.STATE_IDLE) { playerInfo = - playerInfo.copyWithPlaybackState(STATE_IDLE, /* playerError= */ playerInfo.playerError); + playerInfo.copyWithPlaybackState( + Player.STATE_IDLE, /* playerError= */ playerInfo.playerError); listeners.queueEvent( - EVENT_PLAYBACK_STATE_CHANGED, listener -> listener.onPlaybackStateChanged(STATE_IDLE)); + Player.EVENT_PLAYBACK_STATE_CHANGED, + listener -> listener.onPlaybackStateChanged(Player.STATE_IDLE)); listeners.flushEvents(); } } @@ -363,14 +299,14 @@ import org.checkerframework.checker.nullness.qual.NonNull; private ListenableFuture dispatchRemoteSessionTaskWithPlayerCommand( @Player.Command int command, RemoteSessionTask task) { - if (command != COMMAND_SET_VIDEO_SURFACE) { + if (command != Player.COMMAND_SET_VIDEO_SURFACE) { flushCommandQueueHandler.sendFlushCommandQueueMessage(); } return dispatchRemoteSessionTask(iSession, task); } private ListenableFuture dispatchRemoteSessionTaskWithSessionCommand( - @CommandCode int commandCode, RemoteSessionTask task) { + @SessionCommand.CommandCode int commandCode, RemoteSessionTask task) { return dispatchRemoteSessionTaskWithSessionCommandInternal( commandCode, /* sessionCommand= */ null, task); } @@ -378,11 +314,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; private ListenableFuture dispatchRemoteSessionTaskWithSessionCommand( SessionCommand sessionCommand, RemoteSessionTask task) { return dispatchRemoteSessionTaskWithSessionCommandInternal( - COMMAND_CODE_CUSTOM, sessionCommand, task); + SessionCommand.COMMAND_CODE_CUSTOM, sessionCommand, task); } private ListenableFuture dispatchRemoteSessionTaskWithSessionCommandInternal( - @CommandCode int commandCode, SessionCommand sessionCommand, RemoteSessionTask task) { + @SessionCommand.CommandCode int commandCode, + SessionCommand sessionCommand, + RemoteSessionTask task) { return dispatchRemoteSessionTask( sessionCommand != null ? getSessionInterfaceWithSessionCommandIfAble(sessionCommand) @@ -394,30 +332,32 @@ import org.checkerframework.checker.nullness.qual.NonNull; IMediaSession iSession, RemoteSessionTask task) { if (iSession != null) { SequencedFutureManager.SequencedFuture result = - sequencedFutureManager.createSequencedFuture(new SessionResult(RESULT_INFO_SKIPPED)); + sequencedFutureManager.createSequencedFuture( + new SessionResult(SessionResult.RESULT_INFO_SKIPPED)); try { task.run(iSession, result.getSequenceNumber()); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to the service or the session is gone", e); - result.set(new SessionResult(RESULT_ERROR_SESSION_DISCONNECTED)); + result.set(new SessionResult(SessionResult.RESULT_ERROR_SESSION_DISCONNECTED)); } return result; } else { // Don't create Future with SequencedFutureManager. // Otherwise session would receive discontinued sequence number, and it would make // future work item 'keeping call sequence when session execute commands' impossible. - return Futures.immediateFuture(new SessionResult(RESULT_ERROR_PERMISSION_DENIED)); + return Futures.immediateFuture( + new SessionResult(SessionResult.RESULT_ERROR_PERMISSION_DENIED)); } } @Override public void play() { - if (!isPlayerCommandAvailable(COMMAND_PLAY_PAUSE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_PLAY_PAUSE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_PLAY_PAUSE, + Player.COMMAND_PLAY_PAUSE, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -427,18 +367,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; setPlayWhenReady( /* playWhenReady= */ true, - PLAYBACK_SUPPRESSION_REASON_NONE, - PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); + Player.PLAYBACK_SUPPRESSION_REASON_NONE, + Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); } @Override public void pause() { - if (!isPlayerCommandAvailable(COMMAND_PLAY_PAUSE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_PLAY_PAUSE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_PLAY_PAUSE, + Player.COMMAND_PLAY_PAUSE, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -448,18 +388,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; setPlayWhenReady( /* playWhenReady= */ false, - PLAYBACK_SUPPRESSION_REASON_NONE, - PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); + Player.PLAYBACK_SUPPRESSION_REASON_NONE, + Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); } @Override public void prepare() { - if (!isPlayerCommandAvailable(COMMAND_PREPARE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_PREPARE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_PREPARE, + Player.COMMAND_PREPARE, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -475,23 +415,23 @@ import org.checkerframework.checker.nullness.qual.NonNull; updatePlayerInfo( playerInfo, - /* ignored */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* ignored */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, /* positionDiscontinuity= */ false, - /* ignored */ DISCONTINUITY_REASON_INTERNAL, + /* ignored */ Player.DISCONTINUITY_REASON_INTERNAL, /* mediaItemTransition= */ false, - /* ignored */ MEDIA_ITEM_TRANSITION_REASON_REPEAT); + /* ignored */ Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT); } } @Override public void seekToDefaultPosition() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_DEFAULT_POSITION)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_DEFAULT_POSITION)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_DEFAULT_POSITION, + Player.COMMAND_SEEK_TO_DEFAULT_POSITION, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -504,12 +444,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekToDefaultPosition(int mediaItemIndex) { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_MEDIA_ITEM, + Player.COMMAND_SEEK_TO_MEDIA_ITEM, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -522,12 +462,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekTo(long positionMs) { - if (!isPlayerCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, + Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -540,12 +480,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekTo(int mediaItemIndex, long positionMs) { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_MEDIA_ITEM, + Player.COMMAND_SEEK_TO_MEDIA_ITEM, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -563,12 +503,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekBack() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_BACK)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_BACK)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_BACK, (iSession, seq) -> iSession.seekBack(controllerStub, seq)); + Player.COMMAND_SEEK_BACK, (iSession, seq) -> iSession.seekBack(controllerStub, seq)); seekToInternalByOffset(-getSeekBackIncrement()); } @@ -580,12 +520,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekForward() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_FORWARD)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_FORWARD)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_FORWARD, (iSession, seq) -> iSession.seekForward(controllerStub, seq)); + Player.COMMAND_SEEK_FORWARD, (iSession, seq) -> iSession.seekForward(controllerStub, seq)); seekToInternalByOffset(getSeekForwardIncrement()); } @@ -597,18 +537,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setPlayWhenReady(boolean playWhenReady) { - if (!isPlayerCommandAvailable(COMMAND_PLAY_PAUSE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_PLAY_PAUSE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_PLAY_PAUSE, + Player.COMMAND_PLAY_PAUSE, (iSession, seq) -> iSession.setPlayWhenReady(controllerStub, seq, playWhenReady)); setPlayWhenReady( playWhenReady, - PLAYBACK_SUPPRESSION_REASON_NONE, - PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); + Player.PLAYBACK_SUPPRESSION_REASON_NONE, + Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); } @Override @@ -745,12 +685,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setPlaybackParameters(PlaybackParameters playbackParameters) { - if (!isPlayerCommandAvailable(COMMAND_SET_SPEED_AND_PITCH)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_SPEED_AND_PITCH)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_SPEED_AND_PITCH, + Player.COMMAND_SET_SPEED_AND_PITCH, (iSession, seq) -> iSession.setPlaybackParameters(controllerStub, seq, playbackParameters.toBundle())); @@ -758,7 +698,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo = playerInfo.copyWithPlaybackParameters(playbackParameters); listeners.queueEvent( - EVENT_PLAYBACK_PARAMETERS_CHANGED, + Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, listener -> listener.onPlaybackParametersChanged(playbackParameters)); listeners.flushEvents(); } @@ -771,12 +711,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setPlaybackSpeed(float speed) { - if (!isPlayerCommandAvailable(COMMAND_SET_SPEED_AND_PITCH)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_SPEED_AND_PITCH)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_SPEED_AND_PITCH, + Player.COMMAND_SET_SPEED_AND_PITCH, (iSession, seq) -> iSession.setPlaybackSpeed(controllerStub, seq, speed)); if (playerInfo.playbackParameters.speed != speed) { @@ -784,7 +724,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo = playerInfo.copyWithPlaybackParameters(newPlaybackParameters); listeners.queueEvent( - EVENT_PLAYBACK_PARAMETERS_CHANGED, + Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, listener -> listener.onPlaybackParametersChanged(newPlaybackParameters)); listeners.flushEvents(); } @@ -798,7 +738,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public ListenableFuture setRating(String mediaId, Rating rating) { return dispatchRemoteSessionTaskWithSessionCommand( - COMMAND_CODE_SESSION_SET_RATING, + SessionCommand.COMMAND_CODE_SESSION_SET_RATING, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -810,7 +750,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public ListenableFuture setRating(Rating rating) { return dispatchRemoteSessionTaskWithSessionCommand( - COMMAND_CODE_SESSION_SET_RATING, + SessionCommand.COMMAND_CODE_SESSION_SET_RATING, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -833,12 +773,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItem(MediaItem mediaItem) { - if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_MEDIA_ITEM, + Player.COMMAND_SET_MEDIA_ITEM, (iSession, seq) -> iSession.setMediaItem(controllerStub, seq, mediaItem.toBundle())); setMediaItemsInternal( @@ -850,12 +790,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItem(MediaItem mediaItem, long startPositionMs) { - if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_MEDIA_ITEM, + Player.COMMAND_SET_MEDIA_ITEM, (iSession, seq) -> iSession.setMediaItemWithStartPosition( controllerStub, seq, mediaItem.toBundle(), startPositionMs)); @@ -869,12 +809,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItem(MediaItem mediaItem, boolean resetPosition) { - if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_MEDIA_ITEM, + Player.COMMAND_SET_MEDIA_ITEM, (iSession, seq) -> iSession.setMediaItemWithResetPosition( controllerStub, seq, mediaItem.toBundle(), resetPosition)); @@ -888,12 +828,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItems(List mediaItems) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.setMediaItems( controllerStub, @@ -909,12 +849,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItems(List mediaItems, boolean resetPosition) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.setMediaItemsWithResetPosition( controllerStub, @@ -931,12 +871,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setMediaItems(List mediaItems, int startIndex, long startPositionMs) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.setMediaItemsWithStartIndex( controllerStub, @@ -951,12 +891,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setPlaylistMetadata(MediaMetadata playlistMetadata) { - if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEMS_METADATA)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_MEDIA_ITEMS_METADATA)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_MEDIA_ITEMS_METADATA, + Player.COMMAND_SET_MEDIA_ITEMS_METADATA, (iSession, seq) -> iSession.setPlaylistMetadata(controllerStub, seq, playlistMetadata.toBundle())); @@ -978,12 +918,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void addMediaItem(MediaItem mediaItem) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.addMediaItem(controllerStub, seq, mediaItem.toBundle())); addMediaItemsInternal( @@ -992,12 +932,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void addMediaItem(int index, MediaItem mediaItem) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.addMediaItemWithIndex(controllerStub, seq, index, mediaItem.toBundle())); @@ -1006,12 +946,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void addMediaItems(List mediaItems) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.addMediaItems( controllerStub, @@ -1023,12 +963,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void addMediaItems(int index, List mediaItems) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.addMediaItemsWithIndex( controllerStub, @@ -1079,25 +1019,25 @@ import org.checkerframework.checker.nullness.qual.NonNull; newTimeline, newMediaItemIndex, newPeriodIndex, - DISCONTINUITY_REASON_INTERNAL); + Player.DISCONTINUITY_REASON_INTERNAL); updatePlayerInfo( newPlayerInfo, - /* timelineChangeReason= */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* timelineChangeReason= */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, /* positionDiscontinuity= */ false, - /* ignored */ DISCONTINUITY_REASON_INTERNAL, + /* ignored */ Player.DISCONTINUITY_REASON_INTERNAL, /* mediaItemTransition= */ oldTimeline.isEmpty(), - MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); + Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); } @Override public void removeMediaItem(int index) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.removeMediaItem(controllerStub, seq, index)); removeMediaItemsInternal(/* fromIndex= */ index, /* toIndex= */ index + 1); @@ -1105,12 +1045,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void removeMediaItems(int fromIndex, int toIndex) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.removeMediaItems(controllerStub, seq, fromIndex, toIndex)); removeMediaItemsInternal(fromIndex, toIndex); @@ -1118,12 +1058,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearMediaItems() { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.clearMediaItems(controllerStub, seq)); removeMediaItemsInternal(/* fromIndex= */ 0, /* toIndex= */ Integer.MAX_VALUE); @@ -1199,7 +1139,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; newTimeline, newPositionInfo, SessionPositionInfo.DEFAULT, - DISCONTINUITY_REASON_REMOVE); + Player.DISCONTINUITY_REASON_REMOVE); } else { Window newWindow = newTimeline.getWindow(newMediaItemIndex, new Window()); long defaultPositionMs = newWindow.getDefaultPositionMs(); @@ -1232,7 +1172,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; /* currentLiveOffsetMs= */ C.TIME_UNSET, /* contentDurationMs= */ durationMs, /* contentBufferedPositionMs= */ defaultPositionMs), - DISCONTINUITY_REASON_REMOVE); + Player.DISCONTINUITY_REASON_REMOVE); } } else { newPlayerInfo = @@ -1241,36 +1181,37 @@ import org.checkerframework.checker.nullness.qual.NonNull; newTimeline, newMediaItemIndex, newPeriodIndex, - DISCONTINUITY_REASON_REMOVE); + Player.DISCONTINUITY_REASON_REMOVE); } - // Player transitions to STATE_ENDED if the current index is part of the removed tail. + // Player transitions to Player.STATE_ENDED if the current index is part of the removed tail. final boolean transitionsToEnded = - newPlayerInfo.playbackState != STATE_IDLE - && newPlayerInfo.playbackState != STATE_ENDED + newPlayerInfo.playbackState != Player.STATE_IDLE + && newPlayerInfo.playbackState != Player.STATE_ENDED && fromIndex < clippedToIndex && clippedToIndex == oldTimeline.getWindowCount() && getCurrentMediaItemIndex() >= fromIndex; if (transitionsToEnded) { - newPlayerInfo = newPlayerInfo.copyWithPlaybackState(STATE_ENDED, /* playerError= */ null); + newPlayerInfo = + newPlayerInfo.copyWithPlaybackState(Player.STATE_ENDED, /* playerError= */ null); } updatePlayerInfo( newPlayerInfo, - /* timelineChangeReason= */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* timelineChangeReason= */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, /* positionDiscontinuity= */ currentItemRemoved, - DISCONTINUITY_REASON_REMOVE, + Player.DISCONTINUITY_REASON_REMOVE, /* mediaItemTransition= */ playerInfo.sessionPositionInfo.positionInfo.mediaItemIndex >= fromIndex && playerInfo.sessionPositionInfo.positionInfo.mediaItemIndex < clippedToIndex, - MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); + Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); } } @Override public void moveMediaItem(int currentIndex, int newIndex) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } @@ -1278,7 +1219,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; currentIndex >= 0 && currentIndex < playerInfo.timeline.getWindowCount() && newIndex >= 0); dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.moveMediaItem(controllerStub, seq, currentIndex, newIndex)); int clippedNewIndex = min(newIndex, playerInfo.timeline.getWindowCount() - 1); @@ -1289,7 +1230,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void moveMediaItems(int fromIndex, int toIndex, int newIndex) { - if (!isPlayerCommandAvailable(COMMAND_CHANGE_MEDIA_ITEMS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_CHANGE_MEDIA_ITEMS)) { return; } @@ -1300,7 +1241,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; && newIndex >= 0); dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_CHANGE_MEDIA_ITEMS, + Player.COMMAND_CHANGE_MEDIA_ITEMS, (iSession, seq) -> iSession.moveMediaItems(controllerStub, seq, fromIndex, toIndex, newIndex)); @@ -1356,12 +1297,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekToPreviousMediaItem() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, + Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, (iSession, seq) -> iSession.seekToPreviousMediaItem(controllerStub, seq)); if (getPreviousMediaItemIndex() != C.INDEX_UNSET) { @@ -1371,12 +1312,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekToNextMediaItem() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, + Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, (iSession, seq) -> iSession.seekToNextMediaItem(controllerStub, seq)); if (getNextMediaItemIndex() != C.INDEX_UNSET) { @@ -1386,12 +1327,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekToPrevious() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_PREVIOUS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_PREVIOUS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_PREVIOUS, (iSession, seq) -> iSession.seekToPrevious(controllerStub, seq)); + Player.COMMAND_SEEK_TO_PREVIOUS, + (iSession, seq) -> iSession.seekToPrevious(controllerStub, seq)); Timeline timeline = getCurrentTimeline(); if (timeline.isEmpty() || isPlayingAd()) { @@ -1417,12 +1359,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void seekToNext() { - if (!isPlayerCommandAvailable(COMMAND_SEEK_TO_NEXT)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SEEK_TO_NEXT)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SEEK_TO_NEXT, (iSession, seq) -> iSession.seekToNext(controllerStub, seq)); + Player.COMMAND_SEEK_TO_NEXT, (iSession, seq) -> iSession.seekToNext(controllerStub, seq)); Timeline timeline = getCurrentTimeline(); if (timeline.isEmpty() || isPlayingAd()) { @@ -1444,13 +1386,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; } @Override - public void setRepeatMode(@RepeatMode int repeatMode) { - if (!isPlayerCommandAvailable(COMMAND_SET_REPEAT_MODE)) { + public void setRepeatMode(@Player.RepeatMode int repeatMode) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_REPEAT_MODE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_REPEAT_MODE, + Player.COMMAND_SET_REPEAT_MODE, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -1462,7 +1404,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo = playerInfo.copyWithRepeatMode(repeatMode); listeners.queueEvent( - EVENT_REPEAT_MODE_CHANGED, listener -> listener.onRepeatModeChanged(repeatMode)); + Player.EVENT_REPEAT_MODE_CHANGED, listener -> listener.onRepeatModeChanged(repeatMode)); listeners.flushEvents(); } } @@ -1474,12 +1416,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setShuffleModeEnabled(boolean shuffleModeEnabled) { - if (!isPlayerCommandAvailable(COMMAND_SET_SHUFFLE_MODE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_SHUFFLE_MODE)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_SHUFFLE_MODE, + Player.COMMAND_SET_SHUFFLE_MODE, new RemoteSessionTask() { @Override public void run(IMediaSession iSession, int seq) throws RemoteException { @@ -1491,7 +1433,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo = playerInfo.copyWithShuffleModeEnabled(shuffleModeEnabled); listeners.queueEvent( - EVENT_SHUFFLE_MODE_ENABLED_CHANGED, + Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED, listener -> listener.onShuffleModeEnabledChanged(shuffleModeEnabled)); listeners.flushEvents(); } @@ -1509,12 +1451,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setVolume(float volume) { - if (!isPlayerCommandAvailable(COMMAND_SET_VOLUME)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VOLUME)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_VOLUME, (iSession, seq) -> iSession.setVolume(controllerStub, seq, volume)); + Player.COMMAND_SET_VOLUME, + (iSession, seq) -> iSession.setVolume(controllerStub, seq, volume)); if (playerInfo.volume != volume) { playerInfo = playerInfo.copyWithVolume(volume); @@ -1543,12 +1486,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setDeviceVolume(int volume) { - if (!isPlayerCommandAvailable(COMMAND_SET_DEVICE_VOLUME)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_DEVICE_VOLUME)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_DEVICE_VOLUME, + Player.COMMAND_SET_DEVICE_VOLUME, (iSession, seq) -> iSession.setDeviceVolume(controllerStub, seq, volume)); if (playerInfo.deviceVolume != volume) { @@ -1564,12 +1507,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void increaseDeviceVolume() { - if (!isPlayerCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME)) { + if (!isPlayerCommandAvailable(Player.COMMAND_ADJUST_DEVICE_VOLUME)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_ADJUST_DEVICE_VOLUME, + Player.COMMAND_ADJUST_DEVICE_VOLUME, (iSession, seq) -> iSession.increaseDeviceVolume(controllerStub, seq)); int newDeviceVolume = playerInfo.deviceVolume + 1; @@ -1586,12 +1529,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void decreaseDeviceVolume() { - if (!isPlayerCommandAvailable(COMMAND_ADJUST_DEVICE_VOLUME)) { + if (!isPlayerCommandAvailable(Player.COMMAND_ADJUST_DEVICE_VOLUME)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_ADJUST_DEVICE_VOLUME, + Player.COMMAND_ADJUST_DEVICE_VOLUME, (iSession, seq) -> iSession.decreaseDeviceVolume(controllerStub, seq)); int newDeviceVolume = playerInfo.deviceVolume - 1; @@ -1608,12 +1551,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setDeviceMuted(boolean muted) { - if (!isPlayerCommandAvailable(COMMAND_SET_DEVICE_VOLUME)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_DEVICE_VOLUME)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_DEVICE_VOLUME, + Player.COMMAND_SET_DEVICE_VOLUME, (iSession, seq) -> iSession.setDeviceMuted(controllerStub, seq, muted)); if (playerInfo.deviceMuted != muted) { @@ -1634,7 +1577,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearVideoSurface() { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1645,7 +1588,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearVideoSurface(@Nullable Surface surface) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1657,7 +1600,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setVideoSurface(@Nullable Surface surface) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1670,7 +1613,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1701,7 +1644,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1713,7 +1656,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setVideoSurfaceView(@Nullable SurfaceView surfaceView) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1723,7 +1666,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearVideoSurfaceView(@Nullable SurfaceView surfaceView) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1733,7 +1676,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setVideoTextureView(@Nullable TextureView textureView) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1763,7 +1706,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void clearVideoTextureView(@Nullable TextureView textureView) { - if (!isPlayerCommandAvailable(COMMAND_SET_VIDEO_SURFACE)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) { return; } @@ -1795,12 +1738,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; @Override public void setTrackSelectionParameters(TrackSelectionParameters parameters) { - if (!isPlayerCommandAvailable(COMMAND_SET_TRACK_SELECTION_PARAMETERS)) { + if (!isPlayerCommandAvailable(Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS)) { return; } dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_TRACK_SELECTION_PARAMETERS, + Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS, (iSession, seq) -> iSession.setTrackSelectionParameters(controllerStub, seq, parameters.toBundle())); @@ -1808,7 +1751,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo = playerInfo.copyWithTrackSelectionParameters(parameters); listeners.queueEvent( - EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, + Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, listener -> listener.onTrackSelectionParametersChanged(parameters)); listeners.flushEvents(); } @@ -1928,16 +1871,16 @@ import org.checkerframework.checker.nullness.qual.NonNull; newTimeline, newPositionInfo, newSessionPositionInfo, - DISCONTINUITY_REASON_REMOVE); + Player.DISCONTINUITY_REASON_REMOVE); // Mask the playback state. int maskingPlaybackState = newPlayerInfo.playbackState; - if (startIndex != C.INDEX_UNSET && newPlayerInfo.playbackState != STATE_IDLE) { + if (startIndex != C.INDEX_UNSET && newPlayerInfo.playbackState != Player.STATE_IDLE) { if (newTimeline.isEmpty() || correctedStartIndex) { // Setting an empty timeline or invalid seek transitions to ended. - maskingPlaybackState = STATE_ENDED; + maskingPlaybackState = Player.STATE_ENDED; } else { - maskingPlaybackState = STATE_BUFFERING; + maskingPlaybackState = Player.STATE_BUFFERING; } } newPlayerInfo = @@ -1945,13 +1888,13 @@ import org.checkerframework.checker.nullness.qual.NonNull; updatePlayerInfo( newPlayerInfo, - /* timelineChangeReason= */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* timelineChangeReason= */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, /* positionDiscontinuity= */ !playerInfo.timeline.isEmpty(), - DISCONTINUITY_REASON_REMOVE, + Player.DISCONTINUITY_REASON_REMOVE, /* mediaItemTransition= */ !playerInfo.timeline.isEmpty() || !newPlayerInfo.timeline.isEmpty(), - MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); + Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED); } private void moveMediaItemsInternal(int fromIndex, int toIndex, int newIndex) { @@ -1999,16 +1942,16 @@ import org.checkerframework.checker.nullness.qual.NonNull; newTimeline, newWindowIndex, newPeriodIndex, - DISCONTINUITY_REASON_INTERNAL); + Player.DISCONTINUITY_REASON_INTERNAL); updatePlayerInfo( newPlayerInfo, - /* timelineChangeReason= */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* timelineChangeReason= */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, /* positionDiscontinuity= */ false, - /* ignored */ DISCONTINUITY_REASON_INTERNAL, + /* ignored */ Player.DISCONTINUITY_REASON_INTERNAL, /* mediaItemTransition= */ false, - /* ignored */ MEDIA_ITEM_TRANSITION_REASON_REPEAT); + /* ignored */ Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT); } } @@ -2067,7 +2010,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; playerInfo.sessionPositionInfo.currentLiveOffsetMs, playerInfo.sessionPositionInfo.contentDurationMs, /* contentBufferedPositionMs= */ positionMs == C.TIME_UNSET ? 0 : positionMs), - DISCONTINUITY_REASON_SEEK); + Player.DISCONTINUITY_REASON_SEEK); } else { newPlayerInfo = maskPositionInfo(newPlayerInfo, timeline, periodInfo); } @@ -2084,12 +2027,12 @@ import org.checkerframework.checker.nullness.qual.NonNull; } updatePlayerInfo( newPlayerInfo, - /* ignored */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, - /* ignored */ PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, + /* ignored */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, positionDiscontinuity, - /* positionDiscontinuityReason= */ DISCONTINUITY_REASON_SEEK, + /* positionDiscontinuityReason= */ Player.DISCONTINUITY_REASON_SEEK, mediaItemTransition, - MEDIA_ITEM_TRANSITION_REASON_SEEK); + Player.MEDIA_ITEM_TRANSITION_REASON_SEEK); } private void setPlayWhenReady( @@ -2108,22 +2051,22 @@ import org.checkerframework.checker.nullness.qual.NonNull; playWhenReady, playWhenReadyChangeReason, playbackSuppressionReason); updatePlayerInfo( playerInfo, - /* ignored */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, + /* ignored */ Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, playWhenReadyChangeReason, /* positionDiscontinuity= */ false, - /* ignored */ DISCONTINUITY_REASON_INTERNAL, + /* ignored */ Player.DISCONTINUITY_REASON_INTERNAL, /* mediaItemTransition= */ false, - /* ignored */ MEDIA_ITEM_TRANSITION_REASON_REPEAT); + /* ignored */ Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT); } private void updatePlayerInfo( PlayerInfo newPlayerInfo, - @TimelineChangeReason int timelineChangeReason, - @PlayWhenReadyChangeReason int playWhenReadyChangeReason, + @Player.TimelineChangeReason int timelineChangeReason, + @Player.PlayWhenReadyChangeReason int playWhenReadyChangeReason, boolean positionDiscontinuity, - @DiscontinuityReason int positionDiscontinuityReason, + @Player.DiscontinuityReason int positionDiscontinuityReason, boolean mediaItemTransition, - @MediaItemTransitionReason int mediaItemTransitionReason) { + @Player.MediaItemTransitionReason int mediaItemTransitionReason) { // Assign player info immediately such that all getters return the right values, but keep // snapshot of previous and new states so that listener invocations are triggered correctly. PlayerInfo oldPlayerInfo = this.playerInfo; @@ -2131,14 +2074,14 @@ import org.checkerframework.checker.nullness.qual.NonNull; if (mediaItemTransition) { listeners.queueEvent( - EVENT_MEDIA_ITEM_TRANSITION, + Player.EVENT_MEDIA_ITEM_TRANSITION, listener -> listener.onMediaItemTransition( newPlayerInfo.getCurrentMediaItem(), mediaItemTransitionReason)); } if (positionDiscontinuity) { listeners.queueEvent( - EVENT_POSITION_DISCONTINUITY, + Player.EVENT_POSITION_DISCONTINUITY, listener -> listener.onPositionDiscontinuity( newPlayerInfo.oldPositionInfo, @@ -2152,25 +2095,25 @@ import org.checkerframework.checker.nullness.qual.NonNull; } if (oldPlayerInfo.playbackState != newPlayerInfo.playbackState) { listeners.queueEvent( - EVENT_PLAYBACK_STATE_CHANGED, + Player.EVENT_PLAYBACK_STATE_CHANGED, listener -> listener.onPlaybackStateChanged(newPlayerInfo.playbackState)); } if (oldPlayerInfo.playWhenReady != newPlayerInfo.playWhenReady) { listeners.queueEvent( - EVENT_PLAY_WHEN_READY_CHANGED, + Player.EVENT_PLAY_WHEN_READY_CHANGED, listener -> listener.onPlayWhenReadyChanged( newPlayerInfo.playWhenReady, playWhenReadyChangeReason)); } if (oldPlayerInfo.playbackSuppressionReason != newPlayerInfo.playbackSuppressionReason) { listeners.queueEvent( - EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, + Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, listener -> listener.onPlaybackSuppressionReasonChanged(newPlayerInfo.playbackSuppressionReason)); } if (oldPlayerInfo.isPlaying != newPlayerInfo.isPlaying) { listeners.queueEvent( - EVENT_IS_PLAYING_CHANGED, + Player.EVENT_IS_PLAYING_CHANGED, listener -> listener.onIsPlayingChanged(newPlayerInfo.isPlaying)); } listeners.flushEvents(); @@ -2226,7 +2169,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; private void dispatchRemoteSetVideoSurfaceTaskAndWaitForFuture(@Nullable Surface surface) { Future future = dispatchRemoteSessionTaskWithPlayerCommand( - COMMAND_SET_VIDEO_SURFACE, + Player.COMMAND_SET_VIDEO_SURFACE, (iSession, seq) -> iSession.setVideoSurface(controllerStub, seq, surface)); try { @@ -2267,8 +2210,9 @@ import org.checkerframework.checker.nullness.qual.NonNull; /** Returns session interface if the controller can send the predefined command. */ @Nullable - IMediaSession getSessionInterfaceWithSessionCommandIfAble(@CommandCode int commandCode) { - checkArgument(commandCode != COMMAND_CODE_CUSTOM); + IMediaSession getSessionInterfaceWithSessionCommandIfAble( + @SessionCommand.CommandCode int commandCode) { + checkArgument(commandCode != SessionCommand.COMMAND_CODE_CUSTOM); if (!sessionCommands.contains(commandCode)) { Log.w(TAG, "Controller isn't allowed to call command, commandCode=" + commandCode); return null; @@ -2279,7 +2223,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; /** Returns session interface if the controller can send the custom command. */ @Nullable IMediaSession getSessionInterfaceWithSessionCommandIfAble(SessionCommand command) { - checkArgument(command.commandCode == COMMAND_CODE_CUSTOM); + checkArgument(command.commandCode == SessionCommand.COMMAND_CODE_CUSTOM); if (!sessionCommands.contains(command)) { Log.w(TAG, "Controller isn't allowed to call custom session command:" + command.customAction); return null; @@ -2325,7 +2269,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; connectedToken = new SessionToken( token.getUid(), - TYPE_SESSION, + SessionToken.TYPE_SESSION, result.libraryVersion, result.sessionInterfaceVersion, token.getPackageName(), @@ -2353,9 +2297,9 @@ import org.checkerframework.checker.nullness.qual.NonNull; try { result = checkNotNull(future.get(), "SessionResult must not be null"); } catch (CancellationException unused) { - result = new SessionResult(RESULT_INFO_SKIPPED); + result = new SessionResult(SessionResult.RESULT_INFO_SKIPPED); } catch (ExecutionException | InterruptedException unused) { - result = new SessionResult(RESULT_ERROR_UNKNOWN); + result = new SessionResult(SessionResult.RESULT_ERROR_UNKNOWN); } sendControllerResult(seq, result); }, @@ -2380,7 +2324,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; @SuppressWarnings("deprecation") // Implementing and calling deprecated listener method. void onPlayerInfoChanged( PlayerInfo newPlayerInfo, - @TimelineChangeReason int timelineChangedReason, + @Player.TimelineChangeReason int timelineChangedReason, boolean isTimelineExcluded) { if (!isConnected()) { return; @@ -2397,43 +2341,45 @@ import org.checkerframework.checker.nullness.qual.NonNull; || (oldPlayerError != null && oldPlayerError.errorInfoEquals(playerError)); if (!errorsMatch) { listeners.queueEvent( - EVENT_PLAYER_ERROR, listener -> listener.onPlayerErrorChanged(playerInfo.playerError)); + Player.EVENT_PLAYER_ERROR, + listener -> listener.onPlayerErrorChanged(playerInfo.playerError)); if (playerInfo.playerError != null) { listeners.queueEvent( - EVENT_PLAYER_ERROR, listener -> listener.onPlayerError(playerInfo.playerError)); + Player.EVENT_PLAYER_ERROR, listener -> listener.onPlayerError(playerInfo.playerError)); } } MediaItem oldCurrentMediaItem = oldPlayerInfo.getCurrentMediaItem(); MediaItem currentMediaItem = playerInfo.getCurrentMediaItem(); if (!Util.areEqual(oldCurrentMediaItem, currentMediaItem)) { listeners.queueEvent( - EVENT_MEDIA_ITEM_TRANSITION, + Player.EVENT_MEDIA_ITEM_TRANSITION, listener -> listener.onMediaItemTransition( currentMediaItem, playerInfo.mediaItemTransitionReason)); } if (!Util.areEqual(oldPlayerInfo.currentTracks, playerInfo.currentTracks)) { listeners.queueEvent( - EVENT_TRACKS_CHANGED, listener -> listener.onTracksChanged(playerInfo.currentTracks)); + Player.EVENT_TRACKS_CHANGED, + listener -> listener.onTracksChanged(playerInfo.currentTracks)); } if (!Util.areEqual(oldPlayerInfo.playbackParameters, playerInfo.playbackParameters)) { listeners.queueEvent( - EVENT_PLAYBACK_PARAMETERS_CHANGED, + Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, listener -> listener.onPlaybackParametersChanged(playerInfo.playbackParameters)); } if (oldPlayerInfo.repeatMode != playerInfo.repeatMode) { listeners.queueEvent( - EVENT_REPEAT_MODE_CHANGED, + Player.EVENT_REPEAT_MODE_CHANGED, listener -> listener.onRepeatModeChanged(playerInfo.repeatMode)); } if (oldPlayerInfo.shuffleModeEnabled != playerInfo.shuffleModeEnabled) { listeners.queueEvent( - EVENT_SHUFFLE_MODE_ENABLED_CHANGED, + Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED, listener -> listener.onShuffleModeEnabledChanged(playerInfo.shuffleModeEnabled)); } if (!isTimelineExcluded && !Util.areEqual(oldPlayerInfo.timeline, playerInfo.timeline)) { listeners.queueEvent( - EVENT_TIMELINE_CHANGED, + Player.EVENT_TIMELINE_CHANGED, listener -> listener.onTimelineChanged(playerInfo.timeline, timelineChangedReason)); } if (!Util.areEqual(oldPlayerInfo.playlistMetadata, playerInfo.playlistMetadata)) { @@ -2476,29 +2422,31 @@ import org.checkerframework.checker.nullness.qual.NonNull; } if (oldPlayerInfo.playWhenReady != playerInfo.playWhenReady) { listeners.queueEvent( - EVENT_PLAY_WHEN_READY_CHANGED, + Player.EVENT_PLAY_WHEN_READY_CHANGED, listener -> listener.onPlayWhenReadyChanged( playerInfo.playWhenReady, playerInfo.playWhenReadyChangedReason)); } if (oldPlayerInfo.playbackSuppressionReason != playerInfo.playbackSuppressionReason) { listeners.queueEvent( - EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, + Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, listener -> listener.onPlaybackSuppressionReasonChanged(playerInfo.playbackSuppressionReason)); } if (oldPlayerInfo.playbackState != playerInfo.playbackState) { listeners.queueEvent( - EVENT_PLAYBACK_STATE_CHANGED, + Player.EVENT_PLAYBACK_STATE_CHANGED, listener -> listener.onPlaybackStateChanged(playerInfo.playbackState)); } if (oldPlayerInfo.isPlaying != playerInfo.isPlaying) { listeners.queueEvent( - EVENT_IS_PLAYING_CHANGED, listener -> listener.onIsPlayingChanged(playerInfo.isPlaying)); + Player.EVENT_IS_PLAYING_CHANGED, + listener -> listener.onIsPlayingChanged(playerInfo.isPlaying)); } if (oldPlayerInfo.isLoading != playerInfo.isLoading) { listeners.queueEvent( - EVENT_IS_LOADING_CHANGED, listener -> listener.onIsLoadingChanged(playerInfo.isLoading)); + Player.EVENT_IS_LOADING_CHANGED, + listener -> listener.onIsLoadingChanged(playerInfo.isLoading)); } if (!Util.areEqual(oldPlayerInfo.videoSize, playerInfo.videoSize)) { // TODO(b/187152483): Set proper event code when available. @@ -2509,7 +2457,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; if (!Util.areEqual(oldPlayerInfo.oldPositionInfo, playerInfo.oldPositionInfo) || !Util.areEqual(oldPlayerInfo.newPositionInfo, playerInfo.newPositionInfo)) { listeners.queueEvent( - EVENT_POSITION_DISCONTINUITY, + Player.EVENT_POSITION_DISCONTINUITY, listener -> listener.onPositionDiscontinuity( playerInfo.oldPositionInfo, @@ -2523,17 +2471,17 @@ import org.checkerframework.checker.nullness.qual.NonNull; } if (oldPlayerInfo.seekBackIncrementMs != playerInfo.seekBackIncrementMs) { listeners.queueEvent( - EVENT_SEEK_BACK_INCREMENT_CHANGED, + Player.EVENT_SEEK_BACK_INCREMENT_CHANGED, listener -> listener.onSeekBackIncrementChanged(playerInfo.seekBackIncrementMs)); } if (oldPlayerInfo.seekForwardIncrementMs != playerInfo.seekForwardIncrementMs) { listeners.queueEvent( - EVENT_SEEK_FORWARD_INCREMENT_CHANGED, + Player.EVENT_SEEK_FORWARD_INCREMENT_CHANGED, listener -> listener.onSeekForwardIncrementChanged(playerInfo.seekForwardIncrementMs)); } if (oldPlayerInfo.maxSeekToPreviousPositionMs != newPlayerInfo.maxSeekToPreviousPositionMs) { listeners.queueEvent( - EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED, + Player.EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED, listener -> listener.onMaxSeekToPreviousPositionChanged( newPlayerInfo.maxSeekToPreviousPositionMs)); @@ -2541,7 +2489,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; if (!Util.areEqual( oldPlayerInfo.trackSelectionParameters, newPlayerInfo.trackSelectionParameters)) { listeners.queueEvent( - EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, + Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, listener -> listener.onTrackSelectionParametersChanged(newPlayerInfo.trackSelectionParameters)); } @@ -2571,7 +2519,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; } if (intersectedPlayerCommandsChanged) { listeners.sendEvent( - EVENT_AVAILABLE_COMMANDS_CHANGED, + Player.EVENT_AVAILABLE_COMMANDS_CHANGED, listener -> listener.onAvailableCommandsChanged(intersectedPlayerCommands)); } if (sessionCommandsChanged) { @@ -2596,7 +2544,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; !Util.areEqual(intersectedPlayerCommands, prevIntersectedPlayerCommands); if (intersectedPlayerCommandsChanged) { listeners.sendEvent( - EVENT_AVAILABLE_COMMANDS_CHANGED, + Player.EVENT_AVAILABLE_COMMANDS_CHANGED, listener -> listener.onAvailableCommandsChanged(intersectedPlayerCommands)); } } @@ -2644,8 +2592,8 @@ import org.checkerframework.checker.nullness.qual.NonNull; } } - @RepeatMode - private static int convertRepeatModeForNavigation(@RepeatMode int repeatMode) { + @Player.RepeatMode + private static int convertRepeatModeForNavigation(@Player.RepeatMode int repeatMode) { return repeatMode == Player.REPEAT_MODE_ONE ? Player.REPEAT_MODE_OFF : repeatMode; } @@ -2704,7 +2652,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; /* adIndexInAdGroup= */ C.INDEX_UNSET); playerInfo = playerInfo.copyWithPositionInfos( - oldPositionInfo, newPositionInfo, DISCONTINUITY_REASON_SEEK); + oldPositionInfo, newPositionInfo, Player.DISCONTINUITY_REASON_SEEK); if (playingPeriodChanged || newPositionUs < oldPositionUs) { // The playing period changes or a backwards seek within the playing period occurs. @@ -2918,7 +2866,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; } private static int resolveSubsequentMediaItemIndex( - @RepeatMode int repeatMode, + @Player.RepeatMode int repeatMode, boolean shuffleModeEnabled, int oldMediaItemIndex, Timeline oldTimeline,