Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
adcaf4b0
authored
Mar 16, 2021
by
kimvde
Committed by
Ian Baker
Mar 24, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add available command to seek to any media item
PiperOrigin-RevId: 363144142
parent
997ea3b3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
27 additions
and
12 deletions
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/CastPlayerTest.java
library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java
library/common/src/main/java/com/google/android/exoplayer2/Player.java
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java
View file @
adcaf4b0
...
...
@@ -79,6 +79,7 @@ public final class CastPlayer extends BasePlayer {
new
int
[]
{
COMMAND_PLAY_PAUSE
,
COMMAND_PREPARE_STOP_RELEASE
,
COMMAND_SEEK_TO_MEDIA_ITEM
,
COMMAND_SET_REPEAT_MODE
,
COMMAND_GET_CURRENT_MEDIA_ITEM
,
COMMAND_GET_MEDIA_ITEMS
,
...
...
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/CastPlayerTest.java
View file @
adcaf4b0
...
...
@@ -22,6 +22,7 @@ import static com.google.android.exoplayer2.Player.COMMAND_GET_MEDIA_ITEMS_METAD
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_PLAY_PAUSE
;
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_PREPARE_STOP_RELEASE
;
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM
;
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_SET_REPEAT_MODE
;
...
...
@@ -596,6 +597,7 @@ public class CastPlayerTest {
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_SET_SPEED_AND_PITCH
)).
isFalse
();
assertThat
(
castPlayer
.
isCommandAvailable
(
COMMAND_SET_SHUFFLE_MODE
)).
isFalse
();
assertThat
(
castPlayer
.
isCommandAvailable
(
COMMAND_SET_REPEAT_MODE
)).
isTrue
();
...
...
library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java
View file @
adcaf4b0
...
...
@@ -326,6 +326,7 @@ public abstract class BasePlayer implements Player {
.
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
())
.
build
();
}
}
library/common/src/main/java/com/google/android/exoplayer2/Player.java
View file @
adcaf4b0
...
...
@@ -1031,10 +1031,10 @@ public interface Player {
* Commands that can be executed on a {@code Player}. One of {@link #COMMAND_PLAY_PAUSE}, {@link
* #COMMAND_PREPARE_STOP_RELEASE}, {@link #COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM}, {@link
* #COMMAND_SEEK_TO_NEXT_MEDIA_ITEM}, {@link #COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM}, {@link
* #COMMAND_SE
T_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 #COMMAND_GET_MEDIA_ITEMS_METADATA} or
{@link
* #COMMAND_CHANGE_MEDIA_ITEMS}.
* #COMMAND_SE
EK_TO_MEDIA_ITEM}, {@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
* #COMMAND_
GET_MEDIA_ITEMS_METADATA} or {@link #COMMAND_
CHANGE_MEDIA_ITEMS}.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
...
...
@@ -1044,6 +1044,7 @@ public interface Player {
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM
,
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM
,
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM
,
COMMAND_SEEK_TO_MEDIA_ITEM
,
COMMAND_SET_SPEED_AND_PITCH
,
COMMAND_SET_SHUFFLE_MODE
,
COMMAND_SET_REPEAT_MODE
,
...
...
@@ -1063,20 +1064,22 @@ public interface Player {
int
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM
=
4
;
/** Command to seek to the previous {@link MediaItem} in the playlist. */
int
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM
=
5
;
/** Command to seek to a {@link MediaItem} in the playlist. */
int
COMMAND_SEEK_TO_MEDIA_ITEM
=
6
;
/** Command to set the playback speed and pitch. */
int
COMMAND_SET_SPEED_AND_PITCH
=
6
;
int
COMMAND_SET_SPEED_AND_PITCH
=
7
;
/** Command to enable shuffling. */
int
COMMAND_SET_SHUFFLE_MODE
=
7
;
int
COMMAND_SET_SHUFFLE_MODE
=
8
;
/** Command to set the repeat mode. */
int
COMMAND_SET_REPEAT_MODE
=
8
;
int
COMMAND_SET_REPEAT_MODE
=
9
;
/** Command to get the current {@link MediaItem}. */
int
COMMAND_GET_CURRENT_MEDIA_ITEM
=
9
;
int
COMMAND_GET_CURRENT_MEDIA_ITEM
=
10
;
/** Command to get the {@link MediaItem MediaItems} in the playlist. */
int
COMMAND_GET_MEDIA_ITEMS
=
1
0
;
int
COMMAND_GET_MEDIA_ITEMS
=
1
1
;
/** Command to get the {@link MediaItem MediaItems} metadata. */
int
COMMAND_GET_MEDIA_ITEMS_METADATA
=
1
1
;
int
COMMAND_GET_MEDIA_ITEMS_METADATA
=
1
2
;
/** Command to change the {@link MediaItem MediaItems} in the playlist. */
int
COMMAND_CHANGE_MEDIA_ITEMS
=
1
2
;
int
COMMAND_CHANGE_MEDIA_ITEMS
=
1
3
;
/** Returns the component of this player for audio output, or null if audio is not supported. */
@Nullable
...
...
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java
View file @
adcaf4b0
...
...
@@ -192,7 +192,11 @@ import java.util.concurrent.CopyOnWriteArraySet;
new
ExoTrackSelection
[
renderers
.
length
],
/* info= */
null
);
period
=
new
Timeline
.
Period
();
availableCommands
=
new
Commands
.
Builder
().
addAll
(
PERMANENT_AVAILABLE_COMMANDS
).
build
();
availableCommands
=
new
Commands
.
Builder
()
.
addAll
(
PERMANENT_AVAILABLE_COMMANDS
)
.
add
(
COMMAND_SEEK_TO_MEDIA_ITEM
)
.
build
();
maskingWindowIndex
=
C
.
INDEX_UNSET
;
playbackInfoUpdateHandler
=
clock
.
createHandler
(
applicationLooper
,
/* callback= */
null
);
playbackInfoUpdateListener
=
...
...
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
View file @
adcaf4b0
...
...
@@ -22,6 +22,7 @@ import static com.google.android.exoplayer2.Player.COMMAND_GET_MEDIA_ITEMS_METAD
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_PLAY_PAUSE
;
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_PREPARE_STOP_RELEASE
;
import
static
com
.
google
.
android
.
exoplayer2
.
Player
.
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM
;
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_SET_REPEAT_MODE
;
...
...
@@ -8091,6 +8092,7 @@ public final class ExoPlayerTest {
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM
)).
isFalse
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM
)).
isTrue
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM
)).
isFalse
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_MEDIA_ITEM
)).
isTrue
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SET_SPEED_AND_PITCH
)).
isTrue
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SET_SHUFFLE_MODE
)).
isTrue
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SET_REPEAT_MODE
)).
isTrue
();
...
...
@@ -8128,6 +8130,7 @@ public final class ExoPlayerTest {
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM
)).
isFalse
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM
)).
isFalse
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM
)).
isFalse
();
assertThat
(
player
.
isCommandAvailable
(
COMMAND_SEEK_TO_MEDIA_ITEM
)).
isFalse
();
}
@Test
...
...
@@ -9376,6 +9379,7 @@ public final class ExoPlayerTest {
private
static
Player
.
Commands
createCommands
(
@Player
.
Command
int
...
commands
)
{
Player
.
Commands
.
Builder
builder
=
new
Player
.
Commands
.
Builder
();
builder
.
addAll
(
ExoPlayerImpl
.
PERMANENT_AVAILABLE_COMMANDS
);
builder
.
add
(
COMMAND_SEEK_TO_MEDIA_ITEM
);
for
(
int
command
:
commands
)
{
builder
.
add
(
command
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment