Commit 7e6d8223 by kimvde Committed by Oliver Woodman

Rename MEDIA_ITEM to WINDOW is seek commands

This is more correct and is consistent with the Javadoc.

PiperOrigin-RevId: 383808096
parent 0a20ec6b
......@@ -8,6 +8,12 @@
and `seekBack` methods to `Player`.
* Add `getMaxSeekToPreviousPosition` and `seekToPrevious` methods to
`Player`.
* Add `seekForward` and `seekBack` methods to `Player`.
* Rename `Player` commands `COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM`,
`COMMAND_SEEK_TO_NEXT_MEDIA_ITEM`, `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM` and
`COMMAND_SEEK_TO_MEDIA_ITEM` to `COMMAND_SEEK_IN_CURRENT_WINDOW`,
`COMMAND_SEEK_TO_NEXT_WINDOW`, `COMMAND_SEEK_TO_PREVIOUS_WINDOW` and
`COMMAND_SEEK_TO_WINDOW`, respectively.
* Make `Player` depend on the new `PlaybackException` class instead of
`ExoPlaybackException`:
* `Player.getPlayerError` now returns a `PlaybackException`.
......
......@@ -93,7 +93,7 @@ public final class CastPlayer extends BasePlayer {
COMMAND_PLAY_PAUSE,
COMMAND_PREPARE_STOP,
COMMAND_SEEK_TO_DEFAULT_POSITION,
COMMAND_SEEK_TO_MEDIA_ITEM,
COMMAND_SEEK_TO_WINDOW,
COMMAND_SET_REPEAT_MODE,
COMMAND_GET_CURRENT_MEDIA_ITEM,
COMMAND_GET_MEDIA_ITEMS,
......
......@@ -28,11 +28,11 @@ import static com.google.android.exoplayer2.Player.COMMAND_PLAY_PAUSE;
import static com.google.android.exoplayer2.Player.COMMAND_PREPARE_STOP;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_BACK;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_FORWARD;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_DEFAULT_POSITION;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SET_DEVICE_VOLUME;
import static com.google.android.exoplayer2.Player.COMMAND_SET_MEDIA_ITEMS_METADATA;
import static com.google.android.exoplayer2.Player.COMMAND_SET_REPEAT_MODE;
......@@ -1205,10 +1205,10 @@ public class CastPlayerTest {
assertThat(castPlayer.isCommandAvailable(COMMAND_PLAY_PAUSE)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_PREPARE_STOP)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_DEFAULT_POSITION)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM)).isFalse();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_MEDIA_ITEM)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_NEXT_WINDOW)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_WINDOW)).isFalse();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_TO_WINDOW)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_FORWARD)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_BACK)).isTrue();
assertThat(castPlayer.isCommandAvailable(COMMAND_SET_SPEED_AND_PITCH)).isFalse();
......@@ -1246,7 +1246,7 @@ public class CastPlayerTest {
durationsMs,
/* positionMs= */ C.TIME_UNSET);
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)).isFalse();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW)).isFalse();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_FORWARD)).isFalse();
assertThat(castPlayer.isCommandAvailable(COMMAND_SEEK_BACK)).isFalse();
}
......@@ -1256,12 +1256,12 @@ public class CastPlayerTest {
when(mockRemoteMediaClient.queueJumpToItem(anyInt(), anyLong(), eq(null)))
.thenReturn(mockPendingResult);
Player.Commands commandsWithSeekInCurrentAndToNext =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_WINDOW);
Player.Commands commandsWithSeekInCurrentAndToPrevious =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
Player.Commands commandsWithSeekAnywhere =
createWithPermanentAndSeekInCurrentCommands(
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
COMMAND_SEEK_TO_NEXT_WINDOW, COMMAND_SEEK_TO_PREVIOUS_WINDOW);
int[] mediaQueueItemIds = new int[] {1, 2, 3, 4};
List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds);
......@@ -1288,12 +1288,12 @@ public class CastPlayerTest {
when(mockRemoteMediaClient.queueJumpToItem(anyInt(), anyLong(), eq(null)))
.thenReturn(mockPendingResult);
Player.Commands commandsWithSeekInCurrentAndToNext =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_WINDOW);
Player.Commands commandsWithSeekInCurrentAndToPrevious =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
Player.Commands commandsWithSeekAnywhere =
createWithPermanentAndSeekInCurrentCommands(
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
COMMAND_SEEK_TO_NEXT_WINDOW, COMMAND_SEEK_TO_PREVIOUS_WINDOW);
int[] mediaQueueItemIds = new int[] {1, 2, 3, 4};
List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds);
......@@ -1338,7 +1338,7 @@ public class CastPlayerTest {
Player.Commands commandsWithSeekInCurrent = createWithPermanentAndSeekInCurrentCommands();
;
Player.Commands commandsWithSeekInCurrentAndToNext =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_WINDOW);
MediaItem mediaItem1 = createMediaItem(/* mediaQueueItemId= */ 1);
MediaItem mediaItem2 = createMediaItem(/* mediaQueueItemId= */ 2);
MediaItem mediaItem3 = createMediaItem(/* mediaQueueItemId= */ 3);
......@@ -1373,7 +1373,7 @@ public class CastPlayerTest {
Player.Commands commandsWithSeekInCurrent = createWithPermanentAndSeekInCurrentCommands();
;
Player.Commands commandsWithSeekInCurrentAndToPrevious =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
MediaItem mediaItem1 = createMediaItem(/* mediaQueueItemId= */ 1);
MediaItem mediaItem2 = createMediaItem(/* mediaQueueItemId= */ 2);
MediaItem mediaItem3 = createMediaItem(/* mediaQueueItemId= */ 3);
......@@ -1409,7 +1409,7 @@ public class CastPlayerTest {
Player.Commands commandsWithSeekInCurrent = createWithPermanentAndSeekInCurrentCommands();
;
Player.Commands commandsWithSeekInCurrentAndToNext =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_WINDOW);
MediaItem mediaItem1 = createMediaItem(/* mediaQueueItemId= */ 1);
MediaItem mediaItem2 = createMediaItem(/* mediaQueueItemId= */ 2);
MediaItem mediaItem3 = createMediaItem(/* mediaQueueItemId= */ 3);
......@@ -1455,7 +1455,7 @@ public class CastPlayerTest {
Player.Commands commandsWithSeekInCurrent = createWithPermanentAndSeekInCurrentCommands();
;
Player.Commands commandsWithSeekInCurrentAndToPrevious =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
MediaItem mediaItem1 = createMediaItem(/* mediaQueueItemId= */ 1);
MediaItem mediaItem2 = createMediaItem(/* mediaQueueItemId= */ 2);
MediaItem mediaItem3 = createMediaItem(/* mediaQueueItemId= */ 3);
......@@ -1497,7 +1497,7 @@ public class CastPlayerTest {
public void removeMediaItem_current_notifiesAvailableCommandsChanged() {
Player.Commands commandsWithSeekInCurrent = createWithPermanentAndSeekInCurrentCommands();
Player.Commands commandsWithSeekInCurrentAndToNext =
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
createWithPermanentAndSeekInCurrentCommands(COMMAND_SEEK_TO_NEXT_WINDOW);
MediaItem mediaItem1 = createMediaItem(/* mediaQueueItemId= */ 1);
MediaItem mediaItem2 = createMediaItem(/* mediaQueueItemId= */ 2);
......@@ -1527,7 +1527,7 @@ public class CastPlayerTest {
;
Player.Commands commandsWithSeekAnywhere =
createWithPermanentAndSeekInCurrentCommands(
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
COMMAND_SEEK_TO_NEXT_WINDOW, COMMAND_SEEK_TO_PREVIOUS_WINDOW);
int[] mediaQueueItemIds = new int[] {1};
List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds);
......@@ -1660,7 +1660,7 @@ public class CastPlayerTest {
@Player.Command int... additionalCommands) {
Player.Commands.Builder builder = new Player.Commands.Builder();
builder.addAll(CastPlayer.PERMANENT_AVAILABLE_COMMANDS);
builder.add(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM);
builder.add(COMMAND_SEEK_IN_CURRENT_WINDOW);
builder.add(COMMAND_SEEK_FORWARD);
builder.add(COMMAND_SEEK_BACK);
builder.addAll(additionalCommands);
......
......@@ -15,9 +15,9 @@
*/
package com.google.android.exoplayer2.ext.mediasession;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_WINDOW;
import static java.lang.Math.min;
import android.os.Bundle;
......@@ -102,12 +102,12 @@ public abstract class TimelineQueueNavigator implements MediaSessionConnector.Qu
timeline.getWindow(player.getCurrentWindowIndex(), window);
enableSkipTo = timeline.getWindowCount() > 1;
enablePrevious =
player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM)
player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW)
|| !window.isLive()
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
enableNext =
(window.isLive() && window.isDynamic)
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_WINDOW);
}
long actions = 0;
......
......@@ -281,10 +281,10 @@ public abstract class BasePlayer implements Player {
return new Commands.Builder()
.addAll(permanentAvailableCommands)
.addIf(COMMAND_SEEK_TO_DEFAULT_POSITION, !isPlayingAd())
.addIf(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, isCurrentWindowSeekable() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, hasNext() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, hasPrevious() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_MEDIA_ITEM, !isPlayingAd())
.addIf(COMMAND_SEEK_IN_CURRENT_WINDOW, isCurrentWindowSeekable() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_NEXT_WINDOW, hasNext() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_PREVIOUS_WINDOW, hasPrevious() && !isPlayingAd())
.addIf(COMMAND_SEEK_TO_WINDOW, !isPlayingAd())
.addIf(COMMAND_SEEK_FORWARD, isCurrentWindowSeekable() && !isPlayingAd())
.addIf(COMMAND_SEEK_BACK, isCurrentWindowSeekable() && !isPlayingAd())
.build();
......
......@@ -636,10 +636,10 @@ public interface Player {
COMMAND_PLAY_PAUSE,
COMMAND_PREPARE_STOP,
COMMAND_SEEK_TO_DEFAULT_POSITION,
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM,
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM,
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM,
COMMAND_SEEK_TO_MEDIA_ITEM,
COMMAND_SEEK_IN_CURRENT_WINDOW,
COMMAND_SEEK_TO_NEXT_WINDOW,
COMMAND_SEEK_TO_PREVIOUS_WINDOW,
COMMAND_SEEK_TO_WINDOW,
COMMAND_SEEK_FORWARD,
COMMAND_SEEK_BACK,
COMMAND_SET_SPEED_AND_PITCH,
......@@ -1158,8 +1158,8 @@ public interface Player {
/**
* Commands that can be executed on a {@code Player}. One of {@link #COMMAND_PLAY_PAUSE}, {@link
* #COMMAND_PREPARE_STOP}, {@link #COMMAND_SEEK_TO_DEFAULT_POSITION}, {@link
* #COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM}, {@link #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM}, {@link
* #COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM}, {@link #COMMAND_SEEK_TO_MEDIA_ITEM}, {@link
* #COMMAND_SEEK_IN_CURRENT_WINDOW}, {@link #COMMAND_SEEK_TO_NEXT_WINDOW}, {@link
* #COMMAND_SEEK_TO_PREVIOUS_WINDOW}, {@link #COMMAND_SEEK_TO_WINDOW}, {@link
* #COMMAND_SEEK_FORWARD}, {@link #COMMAND_SEEK_BACK}, {@link #COMMAND_SET_SPEED_AND_PITCH},
* {@link #COMMAND_SET_SHUFFLE_MODE}, {@link #COMMAND_SET_REPEAT_MODE}, {@link
* #COMMAND_GET_CURRENT_MEDIA_ITEM}, {@link #COMMAND_GET_MEDIA_ITEMS}, {@link
......@@ -1176,10 +1176,10 @@ public interface Player {
COMMAND_PLAY_PAUSE,
COMMAND_PREPARE_STOP,
COMMAND_SEEK_TO_DEFAULT_POSITION,
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM,
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM,
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM,
COMMAND_SEEK_TO_MEDIA_ITEM,
COMMAND_SEEK_IN_CURRENT_WINDOW,
COMMAND_SEEK_TO_NEXT_WINDOW,
COMMAND_SEEK_TO_PREVIOUS_WINDOW,
COMMAND_SEEK_TO_WINDOW,
COMMAND_SEEK_FORWARD,
COMMAND_SEEK_BACK,
COMMAND_SET_SPEED_AND_PITCH,
......@@ -1207,13 +1207,13 @@ public interface Player {
/** Command to seek to the default position of the current window. */
int COMMAND_SEEK_TO_DEFAULT_POSITION = 3;
/** Command to seek anywhere into the current window. */
int COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM = 4;
int COMMAND_SEEK_IN_CURRENT_WINDOW = 4;
/** Command to seek to the default position of the next window. */
int COMMAND_SEEK_TO_NEXT_MEDIA_ITEM = 5;
int COMMAND_SEEK_TO_NEXT_WINDOW = 5;
/** Command to seek to the default position of the previous window. */
int COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM = 6;
int COMMAND_SEEK_TO_PREVIOUS_WINDOW = 6;
/** Command to seek anywhere in any window. */
int COMMAND_SEEK_TO_MEDIA_ITEM = 7;
int COMMAND_SEEK_TO_WINDOW = 7;
/** Command to seek forward into the current window. */
int COMMAND_SEEK_FORWARD = 8;
/** Command to seek back into the current window. */
......@@ -1438,11 +1438,11 @@ public interface Player {
* <p>This method does not execute the command.
*
* <p>Executing a command that is not available (for example, calling {@link #next()} if {@link
* #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM} is unavailable) will neither throw an exception nor generate
* a {@link #getPlayerError()} player error}.
* #COMMAND_SEEK_TO_NEXT_WINDOW} is unavailable) will neither throw an exception nor generate a
* {@link #getPlayerError()} player error}.
*
* <p>{@link #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM} and {@link #COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM}
* are unavailable if there is no such {@link MediaItem}.
* <p>{@link #COMMAND_SEEK_TO_NEXT_WINDOW} and {@link #COMMAND_SEEK_TO_PREVIOUS_WINDOW} are
* unavailable if there is no such {@link MediaItem}.
*
* @param command A {@link Command}.
* @return Whether the {@link Command} is available.
......@@ -1458,11 +1458,11 @@ public interface Player {
* change.
*
* <p>Executing a command that is not available (for example, calling {@link #next()} if {@link
* #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM} is unavailable) will neither throw an exception nor generate
* a {@link #getPlayerError()} player error}.
* #COMMAND_SEEK_TO_NEXT_WINDOW} is unavailable) will neither throw an exception nor generate a
* {@link #getPlayerError()} player error}.
*
* <p>{@link #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM} and {@link #COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM}
* are unavailable if there is no such {@link MediaItem}.
* <p>{@link #COMMAND_SEEK_TO_NEXT_WINDOW} and {@link #COMMAND_SEEK_TO_PREVIOUS_WINDOW} are
* unavailable if there is no such {@link MediaItem}.
*
* @return The currently available {@link Commands}.
* @see Listener#onAvailableCommandsChanged
......
......@@ -216,7 +216,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
new Commands.Builder()
.addAll(permanentAvailableCommands)
.add(COMMAND_SEEK_TO_DEFAULT_POSITION)
.add(COMMAND_SEEK_TO_MEDIA_ITEM)
.add(COMMAND_SEEK_TO_WINDOW)
.build();
mediaMetadata = MediaMetadata.EMPTY;
playlistMetadata = MediaMetadata.EMPTY;
......
......@@ -15,9 +15,9 @@
*/
package com.google.android.exoplayer2.ui;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_WINDOW;
import static com.google.android.exoplayer2.Player.EVENT_IS_PLAYING_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAYBACK_STATE_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAY_WHEN_READY_CHANGED;
......@@ -871,18 +871,18 @@ public class PlayerControlView extends FrameLayout {
if (player != null) {
Timeline timeline = player.getCurrentTimeline();
if (!timeline.isEmpty() && !player.isPlayingAd()) {
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM);
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW);
timeline.getWindow(player.getCurrentWindowIndex(), window);
enableSeeking = isSeekable;
enablePrevious =
isSeekable
|| !window.isLive()
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
enableRewind = isSeekable && controlDispatcher.isRewindEnabled();
enableFastForward = isSeekable && controlDispatcher.isFastForwardEnabled();
enableNext =
(window.isLive() && window.isDynamic)
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_WINDOW);
}
}
......
......@@ -15,9 +15,9 @@
*/
package com.google.android.exoplayer2.ui;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_WINDOW;
import static com.google.android.exoplayer2.Player.EVENT_IS_PLAYING_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAYBACK_PARAMETERS_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAYBACK_STATE_CHANGED;
......@@ -1273,17 +1273,17 @@ public class PlayerNotificationManager {
boolean enableNext = false;
Timeline timeline = player.getCurrentTimeline();
if (!timeline.isEmpty() && !player.isPlayingAd()) {
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM);
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW);
timeline.getWindow(player.getCurrentWindowIndex(), window);
enablePrevious =
isSeekable
|| !window.isLive()
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
enableRewind = isSeekable && controlDispatcher.isRewindEnabled();
enableFastForward = isSeekable && controlDispatcher.isFastForwardEnabled();
enableNext =
(window.isLive() && window.isDynamic)
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_WINDOW);
}
List<String> stringActions = new ArrayList<>();
......
......@@ -15,9 +15,9 @@
*/
package com.google.android.exoplayer2.ui;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_IN_CURRENT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_NEXT_WINDOW;
import static com.google.android.exoplayer2.Player.COMMAND_SEEK_TO_PREVIOUS_WINDOW;
import static com.google.android.exoplayer2.Player.EVENT_IS_PLAYING_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAYBACK_PARAMETERS_CHANGED;
import static com.google.android.exoplayer2.Player.EVENT_PLAYBACK_STATE_CHANGED;
......@@ -1133,18 +1133,18 @@ public class StyledPlayerControlView extends FrameLayout {
if (player != null) {
Timeline timeline = player.getCurrentTimeline();
if (!timeline.isEmpty() && !player.isPlayingAd()) {
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM);
boolean isSeekable = player.isCommandAvailable(COMMAND_SEEK_IN_CURRENT_WINDOW);
timeline.getWindow(player.getCurrentWindowIndex(), window);
enableSeeking = isSeekable;
enablePrevious =
isSeekable
|| !window.isLive()
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_PREVIOUS_WINDOW);
enableRewind = isSeekable && controlDispatcher.isRewindEnabled();
enableFastForward = isSeekable && controlDispatcher.isFastForwardEnabled();
enableNext =
(window.isLive() && window.isDynamic)
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_MEDIA_ITEM);
|| player.isCommandAvailable(COMMAND_SEEK_TO_NEXT_WINDOW);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment