SimpleBasePlayer
@UnstableApi
abstract class SimpleBasePlayer : BasePlayer
CompositionPlayer |
A |
FakePlayer |
A fake |
ForwardingSimpleBasePlayer |
A |
A base implementation for Player that reduces the number of methods to implement to a minimum.
Implementation notes:
- Subclasses must override
getStateto populate the current player state on request. - The
Stateshould set theavailable commandsto indicate whichPlayermethods are supported. - All setter-like player methods (for example,
setPlayWhenReady) forward to overridable methods (for example,handleSetPlayWhenReady) that can be used to handle these requests. These methods return aListenableFutureto indicate when the request has been handled and is fully reflected in the values returned fromgetState. This class will automatically request a state update once the request is done. If the state changes can be handled synchronously, these methods can return Guava'simmediateVoidFuture. - Subclasses can manually trigger state updates with
invalidateState, for example if something changes independent ofPlayermethod calls.
- The
Statecan only be created with allowed combinations of state values, avoiding any invalid player states. - Only functionality that is declared as
availableneeds to be implemented. Other methods are automatically ignored. - Listener handling and informing listeners of state changes is handled automatically.
- The base class provides a framework for asynchronous handling of method calls. It changes the visible playback state immediately to the most likely outcome to ensure the user-visible state changes look like synchronous operations. The state is then updated again once the asynchronous method calls have been fully handled.
Summary
Nested types |
|---|
|
A |
|
An immutable description of an item in the playlist, containing both static setup information like |
|
A builder for |
|
Data describing the properties of a period inside a |
|
A builder for |
interface SimpleBasePlayer.PositionSupplierA supplier for a position. |
class SimpleBasePlayer.StateAn immutable state description of the player. |
|
A builder for |
Protected constructors |
|---|
SimpleBasePlayer(applicationLooper: Looper!)Creates the base class. |
SimpleBasePlayer(applicationLooper: Looper!, clock: Clock!)Creates the base class. |
Public functions |
|
|---|---|
Unit |
addListener(listener: Player.Listener!)Registers a listener to receive all events from the player. |
Unit |
addMediaItems(index: Int, mediaItems: (Mutable)List<MediaItem!>!)Adds a list of media items at the given index of the playlist. |
Unit |
Clears any |
Unit |
clearVideoSurface(surface: Surface?)Clears the |
Unit |
clearVideoSurfaceHolder(surfaceHolder: SurfaceHolder?)Clears the |
Unit |
clearVideoSurfaceView(surfaceView: SurfaceView?)Clears the |
Unit |
clearVideoTextureView(textureView: TextureView?)Clears the |
Unit |
This function is deprecated. Use |
Unit |
decreaseDeviceVolume(@C.VolumeFlags flags: Int)Decreases the volume of the device. |
AudioAttributes! |
Returns the attributes for audio playback. |
Int |
Returns the audio session identifier, or |
Player.Commands! |
Returns the player's currently available |
Long |
Returns an estimate of the position in the current content or ad up to which data is buffered, in milliseconds. |
Long |
If |
Long |
If |
Int |
If |
Int |
If |
CueGroup! |
Returns the current |
Int |
Returns the index of the current |
Int |
Returns the index of the period currently being played. |
Long |
Returns the playback position in the current content or ad, in milliseconds, or the prospective position in milliseconds if the |
Timeline! |
Returns the current |
Tracks! |
Returns the current tracks. |
DeviceInfo! |
Gets the device information. |
Int |
Gets the current volume of the device. |
Long |
Returns the duration of the current content or ad in milliseconds, or |
Long |
Returns the maximum position for which |
MediaMetadata! |
Returns the current combined |
Boolean |
Whether playback will proceed when |
PlaybackParameters! |
Returns the currently active playback parameters. |
Int |
Returns the current |
Int |
Returns the reason why playback is suppressed even though |
PlaybackException? |
Returns the error that caused playback to fail. |
MediaMetadata! |
Returns the playlist |
Int |
Returns the current |
Long |
Returns the |
Long |
Returns the |
Boolean |
Returns whether shuffling of media items is enabled. |
Size! |
Gets the size of the surface on which the video is rendered. |
Long |
Returns an estimate of the total buffered duration from the current position, in milliseconds. |
TrackSelectionParameters! |
Returns the parameters constraining the track selection. |
VideoSize! |
Gets the size of the video. |
Float |
Returns the audio volume, with 0 being silence and 1 being unity gain (signal unchanged). |
Unit |
This function is deprecated. Use |
Unit |
increaseDeviceVolume(@C.VolumeFlags flags: Int)Increases the volume of the device. |
Boolean |
Gets whether the device is muted or not. |
Boolean |
Whether the player is currently loading the source. |
Boolean |
Returns whether the player is currently playing an ad. |
Unit |
moveMediaItems(fromIndex: Int, toIndex: Int, newIndex: Int)Moves the media item range to the new index. |
Unit |
mute()Sets the audio volume to 0. |
Unit |
prepare()Prepares the player. |
Unit |
release()Releases the player. |
Unit |
removeListener(listener: Player.Listener!)Unregister a listener registered through |
Unit |
removeMediaItems(fromIndex: Int, toIndex: Int)Removes a range of media items from the playlist. |
Unit |
Replaces the media items at the given range of the playlist. |
Unit |
setAudioAttributes(Sets the attributes for audio playback, used by the underlying audio track. |
Unit |
This function is deprecated. Use |
Unit |
setDeviceMuted(muted: Boolean, @C.VolumeFlags flags: Int)Sets the mute state of the device. |
Unit |
This function is deprecated. Use |
Unit |
setDeviceVolume(volume: Int, @C.VolumeFlags flags: Int)Sets the volume of the device with volume flags. |
Unit |
setMediaItems(Clears the playlist and adds the specified |
Unit |
Clears the playlist and adds the specified |
Unit |
setPlayWhenReady(playWhenReady: Boolean)Sets whether playback should proceed when |
Unit |
setPlaybackParameters(playbackParameters: PlaybackParameters!)Attempts to set the playback parameters. |
Unit |
setPlaylistMetadata(mediaMetadata: MediaMetadata!)Sets the playlist |
Unit |
setRepeatMode(@Player.RepeatMode repeatMode: Int)Sets the |
Unit |
setShuffleModeEnabled(shuffleModeEnabled: Boolean)Sets whether shuffling of media items is enabled. |
Unit |
setTrackSelectionParameters(parameters: TrackSelectionParameters!)Sets the parameters constraining the track selection. |
Unit |
setVideoSurface(surface: Surface?)Sets the |
Unit |
setVideoSurfaceHolder(surfaceHolder: SurfaceHolder?)Sets the |
Unit |
setVideoSurfaceView(surfaceView: SurfaceView?)Sets the |
Unit |
setVideoTextureView(textureView: TextureView?)Sets the |
Unit |
Sets the audio volume, valid values are between 0 (silence) and 1 (unity gain, signal unchanged), inclusive. |
Unit |
stop()Stops playback without resetting the playlist. |
Unit |
unmute()If the audio volume is 0, sets the audio volume to a non-zero value decided by the Player to be the most appropriate. |
Public properties |
|
|---|---|
Looper! |
Protected properties |
|
|---|---|
@MonotonicNonNull SimpleBasePlayer.State! |
Inherited Constants |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Inherited functions |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Inherited properties |
|---|
Protected constructors
SimpleBasePlayer
protected SimpleBasePlayer(applicationLooper: Looper!, clock: Clock!)
Creates the base class.
Public functions
addListener
fun addListener(listener: Player.Listener!): Unit
Registers a listener to receive all events from the player.
The listener's methods will be called on the thread associated with getApplicationLooper.
This method can be called from any thread.
| Parameters | |
|---|---|
listener: Player.Listener! |
The listener to register. |
addMediaItems
fun addMediaItems(index: Int, mediaItems: (Mutable)List<MediaItem!>!): Unit
Adds a list of media items at the given index of the playlist.
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
index: Int |
The index at which to add the media items. If the index is larger than the size of the playlist, the media items are added to the end of the playlist. |
mediaItems: (Mutable)List<MediaItem!>! |
The |
clearVideoSurface
fun clearVideoSurface(): Unit
Clears any Surface, SurfaceHolder, SurfaceView or TextureView currently set on the player.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
clearVideoSurface
fun clearVideoSurface(surface: Surface?): Unit
Clears the Surface onto which video is being rendered if it matches the one passed. Else does nothing.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
surface: Surface? |
The surface to clear. |
clearVideoSurfaceHolder
fun clearVideoSurfaceHolder(surfaceHolder: SurfaceHolder?): Unit
Clears the SurfaceHolder that holds the Surface onto which video is being rendered if it matches the one passed. Else does nothing.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
surfaceHolder: SurfaceHolder? |
The surface holder to clear. |
clearVideoSurfaceView
fun clearVideoSurfaceView(surfaceView: SurfaceView?): Unit
Clears the SurfaceView onto which video is being rendered if it matches the one passed. Else does nothing.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
surfaceView: SurfaceView? |
The texture view to clear. |
clearVideoTextureView
fun clearVideoTextureView(textureView: TextureView?): Unit
Clears the TextureView onto which video is being rendered if it matches the one passed. Else does nothing.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
textureView: TextureView? |
The texture view to clear. |
decreaseDeviceVolume
fun decreaseDeviceVolume(@C.VolumeFlags flags: Int): Unit
Decreases the volume of the device.
The getDeviceVolume device volume cannot be decreased below minVolume.
Note that this method affects the device volume. To change the volume of the current stream only, use setVolume.
This method must only be called if COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
getAudioAttributes
fun getAudioAttributes(): AudioAttributes!
Returns the attributes for audio playback.
This method must only be called if COMMAND_GET_AUDIO_ATTRIBUTES is available.
| See also | |
|---|---|
onAudioAttributesChanged |
getAudioSessionId
fun getAudioSessionId(): Int
Returns the audio session identifier, or AUDIO_SESSION_ID_UNSET if not set.
| See also | |
|---|---|
onAudioSessionIdChanged |
getAvailableCommands
fun getAvailableCommands(): Player.Commands!
Returns the player's currently available Commands.
The returned Commands are not updated when available commands change. Use onAvailableCommandsChanged to get an update when the available commands change.
| Returns | |
|---|---|
Player.Commands! |
The currently available |
| See also | |
|---|---|
onAvailableCommandsChanged |
getBufferedPosition
fun getBufferedPosition(): Long
Returns an estimate of the position in the current content or ad up to which data is buffered, in milliseconds.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getContentBufferedPosition
fun getContentBufferedPosition(): Long
If isPlayingAd returns true, returns an estimate of the content position in the current content up to which data is buffered, in milliseconds. If there is no ad playing, the returned position is the same as that returned by getBufferedPosition.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getContentPosition
fun getContentPosition(): Long
If isPlayingAd returns true, returns the content position that will be played once all ads in the ad group have finished playing, in milliseconds. If there is no ad playing, the returned position is the same as that returned by getCurrentPosition.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getCurrentAdGroupIndex
fun getCurrentAdGroupIndex(): Int
If isPlayingAd returns true, returns the index of the ad group in the period currently being played. Returns INDEX_UNSET otherwise.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getCurrentAdIndexInAdGroup
fun getCurrentAdIndexInAdGroup(): Int
If isPlayingAd returns true, returns the index of the ad in its ad group. Returns INDEX_UNSET otherwise.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getCurrentCues
fun getCurrentCues(): CueGroup!
Returns the current CueGroup.
This method must only be called if COMMAND_GET_TEXT is available.
| See also | |
|---|---|
onCues |
getCurrentMediaItemIndex
fun getCurrentMediaItemIndex(): Int
Returns the index of the current MediaItem in the timeline, or the prospective index if the current timeline is empty.
This method must only be called if COMMAND_GET_TIMELINE is available.
getCurrentPeriodIndex
fun getCurrentPeriodIndex(): Int
Returns the index of the period currently being played.
This method must only be called if COMMAND_GET_TIMELINE is available.
getCurrentPosition
fun getCurrentPosition(): Long
Returns the playback position in the current content or ad, in milliseconds, or the prospective position in milliseconds if the current timeline is empty.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getCurrentTimeline
fun getCurrentTimeline(): Timeline!
Returns the current Timeline. Never null, but may be empty.
This method must only be called if COMMAND_GET_TIMELINE is available.
| See also | |
|---|---|
onTimelineChanged |
getCurrentTracks
fun getCurrentTracks(): Tracks!
Returns the current tracks.
This method must only be called if COMMAND_GET_TRACKS is available.
| See also | |
|---|---|
onTracksChanged |
getDeviceVolume
fun getDeviceVolume(): Int
Gets the current volume of the device.
For devices with local playback, the volume returned by this method varies according to the current stream type. The stream type is determined by getStreamType.
For devices with remote playback, the volume of the remote device is returned.
Note that this method returns the volume of the device. To check the current stream volume, use getVolume.
This method must only be called if COMMAND_GET_DEVICE_VOLUME is available.
| See also | |
|---|---|
onDeviceVolumeChanged |
getDuration
fun getDuration(): Long
Returns the duration of the current content or ad in milliseconds, or TIME_UNSET if the duration is not known.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getMaxSeekToPreviousPosition
fun getMaxSeekToPreviousPosition(): Long
Returns the maximum position for which seekToPrevious seeks to the previous MediaItem, in milliseconds.
| Returns | |
|---|---|
Long |
The maximum seek to previous position, in milliseconds. |
| See also | |
|---|---|
onMaxSeekToPreviousPositionChanged |
getMediaMetadata
fun getMediaMetadata(): MediaMetadata!
Returns the current combined MediaMetadata, or EMPTY if not supported.
This MediaMetadata is a combination of the MediaItem metadata, the static metadata in the media's Format, and any timed metadata that has been parsed from the media and output via onMetadata. If a field is populated in the mediaMetadata, it will be prioritised above the same field coming from static or timed metadata.
This method must only be called if COMMAND_GET_METADATA is available.
| See also | |
|---|---|
onMediaMetadataChanged |
getPlayWhenReady
fun getPlayWhenReady(): Boolean
Whether playback will proceed when getPlaybackState == STATE_READY.
| Returns | |
|---|---|
Boolean |
Whether playback will proceed when ready. |
| See also | |
|---|---|
onPlayWhenReadyChanged |
getPlaybackParameters
fun getPlaybackParameters(): PlaybackParameters!
Returns the currently active playback parameters.
| See also | |
|---|---|
onPlaybackParametersChanged |
getPlaybackState
@Player.State
fun getPlaybackState(): Int
Returns the current playback state of the player.
| Returns | |
|---|---|
Int |
The current |
| See also | |
|---|---|
onPlaybackStateChanged |
getPlaybackSuppressionReason
fun getPlaybackSuppressionReason(): Int
Returns the reason why playback is suppressed even though getPlayWhenReady is
true, or PLAYBACK_SUPPRESSION_REASON_NONE if playback is not suppressed.
| Returns | |
|---|---|
Int |
The current |
| See also | |
|---|---|
onPlaybackSuppressionReasonChanged |
getPlayerError
fun getPlayerError(): PlaybackException?
Returns the error that caused playback to fail. This is the same error that will have been reported via onPlayerError at the time of failure. It can be queried using this method until the player is re-prepared.
Note that this method will always return null if getPlaybackState is not STATE_IDLE.
| Returns | |
|---|---|
PlaybackException? |
The error, or |
| See also | |
|---|---|
onPlayerError |
getPlaylistMetadata
fun getPlaylistMetadata(): MediaMetadata!
Returns the playlist MediaMetadata, as set by setPlaylistMetadata, or EMPTY if not supported.
This method must only be called if COMMAND_GET_METADATA is available.
| See also | |
|---|---|
onPlaylistMetadataChanged |
getRepeatMode
@Player.RepeatMode
fun getRepeatMode(): Int
Returns the current RepeatMode used for playback.
| Returns | |
|---|---|
Int |
The current repeat mode. |
| See also | |
|---|---|
onRepeatModeChanged |
getSeekBackIncrement
fun getSeekBackIncrement(): Long
Returns the seekBack increment.
| Returns | |
|---|---|
Long |
The seek back increment, in milliseconds. |
| See also | |
|---|---|
onSeekBackIncrementChanged |
getSeekForwardIncrement
fun getSeekForwardIncrement(): Long
Returns the seekForward increment.
| Returns | |
|---|---|
Long |
The seek forward increment, in milliseconds. |
| See also | |
|---|---|
onSeekForwardIncrementChanged |
getShuffleModeEnabled
fun getShuffleModeEnabled(): Boolean
Returns whether shuffling of media items is enabled.
| See also | |
|---|---|
onShuffleModeEnabledChanged |
getSurfaceSize
fun getSurfaceSize(): Size!
Gets the size of the surface on which the video is rendered.
| See also | |
|---|---|
onSurfaceSizeChanged |
getTotalBufferedDuration
fun getTotalBufferedDuration(): Long
Returns an estimate of the total buffered duration from the current position, in milliseconds. This includes pre-buffered data for subsequent ads and media items.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
getTrackSelectionParameters
fun getTrackSelectionParameters(): TrackSelectionParameters!
Returns the parameters constraining the track selection.
| See also | |
|---|---|
onTrackSelectionParametersChanged |
} |
getVideoSize
fun getVideoSize(): VideoSize!
Gets the size of the video.
The video's width and height are 0 if there is no supported video track or its size has not been determined yet.
| See also | |
|---|---|
onVideoSizeChanged |
getVolume
fun getVolume(): Float
Returns the audio volume, with 0 being silence and 1 being unity gain (signal unchanged).
This method must only be called if COMMAND_GET_VOLUME is available.
| Returns | |
|---|---|
Float |
The linear gain applied to all audio channels. |
| See also | |
|---|---|
onVolumeChanged |
increaseDeviceVolume
fun increaseDeviceVolume(@C.VolumeFlags flags: Int): Unit
Increases the volume of the device.
The getDeviceVolume device volume cannot be increased above maxVolume, if defined.
Note that this method affects the device volume. To change the volume of the current stream only, use setVolume.
This method must only be called if COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
isDeviceMuted
fun isDeviceMuted(): Boolean
Gets whether the device is muted or not.
Note that this method returns the mute state of the device. To check if the current stream is muted, use getVolume() == 0.
This method must only be called if COMMAND_GET_DEVICE_VOLUME is available.
| See also | |
|---|---|
onDeviceVolumeChanged |
isLoading
fun isLoading(): Boolean
Whether the player is currently loading the source.
| Returns | |
|---|---|
Boolean |
Whether the player is currently loading the source. |
| See also | |
|---|---|
onIsLoadingChanged |
isPlayingAd
fun isPlayingAd(): Boolean
Returns whether the player is currently playing an ad.
This method must only be called if COMMAND_GET_CURRENT_MEDIA_ITEM is available.
moveMediaItems
fun moveMediaItems(fromIndex: Int, toIndex: Int, newIndex: Int): Unit
Moves the media item range to the new index.
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
fromIndex: Int |
The start of the range to move. If the index is larger than the size of the playlist, the request is ignored. |
toIndex: Int |
The first item not to be included in the range (exclusive). If the index is larger than the size of the playlist, items up to the end of the playlist are moved. |
newIndex: Int |
The new index of the first media item of the range. If the new index is larger than the size of the remaining playlist after removing the range, the range is moved to the end of the playlist. |
mute
fun mute(): Unit
Sets the audio volume to 0.
This method must only be called if COMMAND_SET_VOLUME is available.
prepare
fun prepare(): Unit
Prepares the player.
This method must only be called if COMMAND_PREPARE is available.
This will move the player out of idle state and the player will start loading media and acquire resources needed for playback.
release
fun release(): Unit
Releases the player. This method must be called when the player is no longer required. The player must not be used after calling this method.
This method must only be called if COMMAND_RELEASE is available.
removeListener
fun removeListener(listener: Player.Listener!): Unit
Unregister a listener registered through addListener. The listener will no longer receive events.
| Parameters | |
|---|---|
listener: Player.Listener! |
The listener to unregister. |
removeMediaItems
fun removeMediaItems(fromIndex: Int, toIndex: Int): Unit
Removes a range of media items from the playlist.
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
fromIndex: Int |
The index at which to start removing media items. If the index is larger than the size of the playlist, the request is ignored. |
toIndex: Int |
The index of the first item to be kept (exclusive). If the index is larger than the size of the playlist, media items up to the end of the playlist are removed. |
replaceMediaItems
fun replaceMediaItems(
fromIndex: Int,
toIndex: Int,
mediaItems: (Mutable)List<MediaItem!>!
): Unit
Replaces the media items at the given range of the playlist.
Implementations of this method may attempt to seamlessly continue playback if the currently playing media item is replaced with a compatible one (e.g. same URL, only metadata has changed).
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
Note that it is possible to replace a range with an arbitrary number of new items, so that the number of removed items defined by fromIndex and toIndex does not have to match the number of added items defined by mediaItems. As result, it may also change the index of subsequent items not touched by this operation.
| Parameters | |
|---|---|
fromIndex: Int |
The start of the range. If the index is larger than the size of the playlist, the request is ignored. |
toIndex: Int |
The first item not to be included in the range (exclusive). If the index is larger than the size of the playlist, items up to the end of the playlist are replaced. |
mediaItems: (Mutable)List<MediaItem!>! |
The |
setAudioAttributes
fun setAudioAttributes(
audioAttributes: AudioAttributes!,
handleAudioFocus: Boolean
): Unit
Sets the attributes for audio playback, used by the underlying audio track. If not set, the default audio attributes will be used. They are suitable for general media playback.
Setting the audio attributes during playback may introduce a short gap in audio output as the audio track is recreated. A new audio session id will also be generated.
If tunneling is enabled by the track selector, the specified audio attributes will be ignored, but they will take effect if audio is later played without tunneling.
If audio focus should be handled, the usage must be USAGE_MEDIA or USAGE_GAME. Other usages will throw an IllegalArgumentException.
This method must only be called if COMMAND_SET_AUDIO_ATTRIBUTES is available.
| Parameters | |
|---|---|
audioAttributes: AudioAttributes! |
The attributes to use for audio playback. |
handleAudioFocus: Boolean |
True if the player should handle audio focus, false otherwise. |
setDeviceMuted
fun setDeviceMuted(muted: Boolean, @C.VolumeFlags flags: Int): Unit
Sets the mute state of the device.
Note that this method affects the device volume. To mute just the current stream, use
setVolume(0) instead.
This method must only be called if COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
muted: Boolean |
Whether to set the device to be muted or not |
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
setDeviceVolume
fun setDeviceVolume(volume: Int, @C.VolumeFlags flags: Int): Unit
Sets the volume of the device with volume flags.
Note that this method affects the device volume. To change the volume of the current stream only, use setVolume.
This method must only be called if COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
volume: Int |
The volume to set. |
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
setMediaItems
fun setMediaItems(
mediaItems: (Mutable)List<MediaItem!>!,
resetPosition: Boolean
): Unit
Clears the playlist and adds the specified media items.
To replace a span of media items (possibly seamlessly) without clearing the playlist, use replaceMediaItems.
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
mediaItems: (Mutable)List<MediaItem!>! |
The new |
resetPosition: Boolean |
Whether the playback position should be reset to the default position in the first |
setMediaItems
fun setMediaItems(
mediaItems: (Mutable)List<MediaItem!>!,
startIndex: Int,
startPositionMs: Long
): Unit
Clears the playlist and adds the specified media items.
To replace a span of media items (possibly seamlessly) without clearing the playlist, use replaceMediaItems.
This method must only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
mediaItems: (Mutable)List<MediaItem!>! |
The new |
startIndex: Int |
The |
startPositionMs: Long |
The position in milliseconds to start playback from. If |
| Throws | |
|---|---|
androidx.media3.common.IllegalSeekPositionException |
If the provided |
setPlayWhenReady
fun setPlayWhenReady(playWhenReady: Boolean): Unit
Sets whether playback should proceed when getPlaybackState == STATE_READY.
If the player is already in the ready state then this method pauses and resumes playback.
This method must only be called if COMMAND_PLAY_PAUSE is available.
| Parameters | |
|---|---|
playWhenReady: Boolean |
Whether playback should proceed when ready. |
setPlaybackParameters
fun setPlaybackParameters(playbackParameters: PlaybackParameters!): Unit
Attempts to set the playback parameters. Passing DEFAULT resets the player to the default, which means there is no speed or pitch adjustment.
Playback parameters changes may cause the player to buffer. onPlaybackParametersChanged will be called whenever the currently active playback parameters change.
This method must only be called if COMMAND_SET_SPEED_AND_PITCH is available.
| Parameters | |
|---|---|
playbackParameters: PlaybackParameters! |
The playback parameters. |
setPlaylistMetadata
fun setPlaylistMetadata(mediaMetadata: MediaMetadata!): Unit
Sets the playlist MediaMetadata.
This method must only be called if COMMAND_SET_PLAYLIST_METADATA is available.
setRepeatMode
fun setRepeatMode(@Player.RepeatMode repeatMode: Int): Unit
Sets the RepeatMode to be used for playback.
This method must only be called if COMMAND_SET_REPEAT_MODE is available.
| Parameters | |
|---|---|
@Player.RepeatMode repeatMode: Int |
The repeat mode. |
setShuffleModeEnabled
fun setShuffleModeEnabled(shuffleModeEnabled: Boolean): Unit
Sets whether shuffling of media items is enabled.
This method must only be called if COMMAND_SET_SHUFFLE_MODE is available.
| Parameters | |
|---|---|
shuffleModeEnabled: Boolean |
Whether shuffling is enabled. |
setTrackSelectionParameters
fun setTrackSelectionParameters(parameters: TrackSelectionParameters!): Unit
Sets the parameters constraining the track selection.
Unsupported parameters will be silently ignored.
Use getTrackSelectionParameters to retrieve the current parameters. For example, the following snippet restricts video to SD whilst keep other track selection parameters unchanged:
player.setTrackSelectionParameters( player.getTrackSelectionParameters() .buildUpon() .setMaxVideoSizeSd() .build())
This method must only be called if COMMAND_SET_TRACK_SELECTION_PARAMETERS is available.
setVideoSurface
fun setVideoSurface(surface: Surface?): Unit
Sets the Surface onto which video will be rendered. The caller is responsible for tracking the lifecycle of the surface, and must clear the surface by calling
setVideoSurface(null) if the surface is destroyed.
If the surface is held by a SurfaceView, TextureView or SurfaceHolder then it's recommended to use setVideoSurfaceView, setVideoTextureView or setVideoSurfaceHolder rather than this method, since passing the holder allows the player to track the lifecycle of the surface automatically.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
setVideoSurfaceHolder
fun setVideoSurfaceHolder(surfaceHolder: SurfaceHolder?): Unit
Sets the SurfaceHolder that holds the Surface onto which video will be rendered. The player will track the lifecycle of the surface automatically.
The thread that calls the SurfaceHolder.Callback methods must be the thread associated with getApplicationLooper.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
surfaceHolder: SurfaceHolder? |
The surface holder. |
setVideoSurfaceView
fun setVideoSurfaceView(surfaceView: SurfaceView?): Unit
Sets the SurfaceView onto which video will be rendered. The player will track the lifecycle of the surface automatically.
The thread that calls the SurfaceHolder.Callback methods must be the thread associated with getApplicationLooper.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
surfaceView: SurfaceView? |
The surface view. |
setVideoTextureView
fun setVideoTextureView(textureView: TextureView?): Unit
Sets the TextureView onto which video will be rendered. The player will track the lifecycle of the surface automatically.
Consider using SurfaceView via setVideoSurfaceView instead of TextureView. SurfaceView generally causes lower battery consumption, and has better handling for HDR and secure content. See Choosing a surface type for more information.
The thread that calls the TextureView.SurfaceTextureListener methods must be the thread associated with getApplicationLooper.
This method must only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
textureView: TextureView? |
The texture view. |
setVolume
fun setVolume(volume: Float): Unit
Sets the audio volume, valid values are between 0 (silence) and 1 (unity gain, signal unchanged), inclusive.
This method must only be called if COMMAND_SET_VOLUME is available.
| Parameters | |
|---|---|
volume: Float |
Linear output gain to apply to all audio channels. |
stop
fun stop(): Unit
Stops playback without resetting the playlist. Use pause rather than this method if the intention is to pause playback.
Calling this method will cause the playback state to transition to STATE_IDLE and the player will release the loaded media and resources required for playback. The player instance can still be used by calling prepare again, and release must still be called on the player if it's no longer required.
Calling this method does not clear the playlist, reset the playback position or the playback error.
This method must only be called if COMMAND_STOP is available.
unmute
fun unmute(): Unit
If the audio volume is 0, sets the audio volume to a non-zero value decided by the Player to be the most appropriate.
This method must only be called if COMMAND_SET_VOLUME is available.
Protected functions
getPlaceholderMediaItemData
@ForOverride
protected fun getPlaceholderMediaItemData(mediaItem: MediaItem!): SimpleBasePlayer.MediaItemData!
Returns the placeholder MediaItemData used for a new MediaItem added to the playlist.
An implementation only needs to override this method if it can determine a more accurate placeholder state than the default.
| Returns | |
|---|---|
SimpleBasePlayer.MediaItemData! |
The |
getPlaceholderState
@ForOverride
protected fun getPlaceholderState(suggestedPlaceholderState: SimpleBasePlayer.State!): SimpleBasePlayer.State!
Returns the placeholder state used while a player method is handled asynchronously.
The suggestedPlaceholderState already contains the most likely state update, for example setting playWhenReady to true if player.setPlayWhenReady(true) is called, and an implementations only needs to override this method if it can determine a more accurate placeholder state.
| Parameters | |
|---|---|
suggestedPlaceholderState: SimpleBasePlayer.State! |
The suggested placeholder |
| Returns | |
|---|---|
SimpleBasePlayer.State! |
The placeholder |
handleAddMediaItems
@ForOverride
protected fun handleAddMediaItems(index: Int, mediaItems: (Mutable)List<MediaItem!>!): ListenableFuture<Any!>!
Handles calls to addMediaItem and addMediaItems.
Will only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
index: Int |
The index at which to add the items. The index is in the range 0 <= |
mediaItems: (Mutable)List<MediaItem!>! |
The media items to add. |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleClearVideoOutput
@ForOverride
protected fun handleClearVideoOutput(videoOutput: Any?): ListenableFuture<Any!>!
Handles calls to clear the video output.
Will only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
videoOutput: Any? |
The video output to clear. If null any current output should be cleared. If non-null, the output should only be cleared if it matches the provided argument. This is either a |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleDecreaseDeviceVolume
@ForOverride
protected fun handleDecreaseDeviceVolume(@C.VolumeFlags flags: Int): ListenableFuture<Any!>!
Handles calls to decreaseDeviceVolume and decreaseDeviceVolume.
Will only be called if COMMAND_ADJUST_DEVICE_VOLUME or COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleIncreaseDeviceVolume
@ForOverride
protected fun handleIncreaseDeviceVolume(@C.VolumeFlags flags: Int): ListenableFuture<Any!>!
Handles calls to increaseDeviceVolume and increaseDeviceVolume.
Will only be called if COMMAND_ADJUST_DEVICE_VOLUME or COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleMoveMediaItems
@ForOverride
protected fun handleMoveMediaItems(fromIndex: Int, toIndex: Int, newIndex: Int): ListenableFuture<Any!>!
Handles calls to moveMediaItem and moveMediaItems.
Will only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
fromIndex: Int |
The start index of the items to move. The index is in the range 0 <= |
toIndex: Int |
The index of the first item not to be included in the move (exclusive). The index is in the range |
newIndex: Int |
The new index of the first moved item. The index is in the range |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handlePrepare
@ForOverride
protected fun handlePrepare(): ListenableFuture<Any!>!
Handles calls to prepare.
Will only be called if COMMAND_PREPARE is available.
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleRelease
@ForOverride
protected fun handleRelease(): ListenableFuture<Any!>!
Handles calls to release.
Will only be called if COMMAND_RELEASE is available.
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleRemoveMediaItems
@ForOverride
protected fun handleRemoveMediaItems(fromIndex: Int, toIndex: Int): ListenableFuture<Any!>!
Handles calls to removeMediaItem and removeMediaItems.
Will only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
fromIndex: Int |
The index at which to start removing media items. The index is in the range 0 <= |
toIndex: Int |
The index of the first item to be kept (exclusive). The index is in the range |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleReplaceMediaItems
@ForOverride
protected fun handleReplaceMediaItems(
fromIndex: Int,
toIndex: Int,
mediaItems: (Mutable)List<MediaItem!>!
): ListenableFuture<Any!>!
Handles calls to replaceMediaItem and replaceMediaItems.
Will only be called if COMMAND_CHANGE_MEDIA_ITEMS is available.
| Parameters | |
|---|---|
fromIndex: Int |
The start index of the items to replace. The index is in the range 0 <= |
toIndex: Int |
The index of the first item not to be replaced (exclusive). The index is in the range |
mediaItems: (Mutable)List<MediaItem!>! |
The media items to replace the specified range with. |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSeek
@ForOverride
protected fun handleSeek(
mediaItemIndex: Int,
positionMs: Long,
@Player.Command seekCommand: Int
): ListenableFuture<Any!>!
Handles calls to seekTo and other seek operations (for example, seekToNext).
Will only be called if the appropriate Player.Command, for example COMMAND_SEEK_TO_MEDIA_ITEM or COMMAND_SEEK_TO_NEXT, is available.
| Parameters | |
|---|---|
mediaItemIndex: Int |
The media item index to seek to. If the original seek operation did not directly specify an index, this is the most likely implied index based on the available player state. If the implied action is to do nothing, this will be |
positionMs: Long |
The position in milliseconds to start playback from, or |
@Player.Command seekCommand: Int |
The |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetAudioAttributes
@ForOverride
protected fun handleSetAudioAttributes(
audioAttributes: AudioAttributes!,
handleAudioFocus: Boolean
): ListenableFuture<Any!>!
Handles calls to set the audio attributes.
Will only be called if COMMAND_SET_AUDIO_ATTRIBUTES is available.
| Parameters | |
|---|---|
audioAttributes: AudioAttributes! |
The attributes to use for audio playback. |
handleAudioFocus: Boolean |
True if the player should handle audio focus, false otherwise. |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetDeviceMuted
@ForOverride
protected fun handleSetDeviceMuted(muted: Boolean, @C.VolumeFlags flags: Int): ListenableFuture<Any!>!
Handles calls to setDeviceMuted and setDeviceMuted.
Will only be called if COMMAND_ADJUST_DEVICE_VOLUME or COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
muted: Boolean |
Whether the device was requested to be muted. |
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetDeviceVolume
@ForOverride
protected fun handleSetDeviceVolume(
deviceVolume: @IntRange(from = 0) Int,
@C.VolumeFlags flags: Int
): ListenableFuture<Any!>!
Handles calls to setDeviceVolume and setDeviceVolume.
Will only be called if COMMAND_SET_DEVICE_VOLUME or COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS is available.
| Parameters | |
|---|---|
deviceVolume: @IntRange(from = 0) Int |
The requested device volume. |
@C.VolumeFlags flags: Int |
Either 0 or a bitwise combination of one or more |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetMediaItems
@ForOverride
protected fun handleSetMediaItems(
mediaItems: (Mutable)List<MediaItem!>!,
startIndex: Int,
startPositionMs: Long
): ListenableFuture<Any!>!
Handles calls to setMediaItem and setMediaItems.
Will only be called if COMMAND_SET_MEDIA_ITEM or COMMAND_CHANGE_MEDIA_ITEMS is available. If only COMMAND_SET_MEDIA_ITEM is available, the list of media items will always contain exactly one item.
| Parameters | |
|---|---|
mediaItems: (Mutable)List<MediaItem!>! |
The media items to add. |
startIndex: Int |
The index at which to start playback from, or |
startPositionMs: Long |
The position in milliseconds to start playback from, or |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetPlayWhenReady
@ForOverride
protected fun handleSetPlayWhenReady(playWhenReady: Boolean): ListenableFuture<Any!>!
Handles calls to setPlayWhenReady, play and pause.
Will only be called if COMMAND_PLAY_PAUSE is available.
| Parameters | |
|---|---|
playWhenReady: Boolean |
The requested |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetPlaybackParameters
@ForOverride
protected fun handleSetPlaybackParameters(playbackParameters: PlaybackParameters!): ListenableFuture<Any!>!
Handles calls to setPlaybackParameters or setPlaybackSpeed.
Will only be called if COMMAND_SET_SPEED_AND_PITCH is available.
| Parameters | |
|---|---|
playbackParameters: PlaybackParameters! |
The requested |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetPlaylistMetadata
@ForOverride
protected fun handleSetPlaylistMetadata(playlistMetadata: MediaMetadata!): ListenableFuture<Any!>!
Handles calls to setPlaylistMetadata.
Will only be called if COMMAND_SET_PLAYLIST_METADATA is available.
| Parameters | |
|---|---|
playlistMetadata: MediaMetadata! |
The requested |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetRepeatMode
@ForOverride
protected fun handleSetRepeatMode(@Player.RepeatMode repeatMode: Int): ListenableFuture<Any!>!
Handles calls to setRepeatMode.
Will only be called if COMMAND_SET_REPEAT_MODE is available.
| Parameters | |
|---|---|
@Player.RepeatMode repeatMode: Int |
The requested |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetShuffleModeEnabled
@ForOverride
protected fun handleSetShuffleModeEnabled(shuffleModeEnabled: Boolean): ListenableFuture<Any!>!
Handles calls to setShuffleModeEnabled.
Will only be called if COMMAND_SET_SHUFFLE_MODE is available.
| Parameters | |
|---|---|
shuffleModeEnabled: Boolean |
Whether shuffle mode was requested to be enabled. |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetTrackSelectionParameters
@ForOverride
protected fun handleSetTrackSelectionParameters(
trackSelectionParameters: TrackSelectionParameters!
): ListenableFuture<Any!>!
Handles calls to setTrackSelectionParameters.
Will only be called if COMMAND_SET_TRACK_SELECTION_PARAMETERS is available.
| Parameters | |
|---|---|
trackSelectionParameters: TrackSelectionParameters! |
The requested |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetVideoOutput
@ForOverride
protected fun handleSetVideoOutput(videoOutput: Any!): ListenableFuture<Any!>!
Handles calls to set the video output.
Will only be called if COMMAND_SET_VIDEO_SURFACE is available.
| Parameters | |
|---|---|
videoOutput: Any! |
The requested video output. This is either a |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleSetVolume
@ForOverride
protected funhandleSetVolume(volume: @FloatRange(from = 0, to = 1.0) Float): ListenableFuture<Any!>!
handleSetVolume
@ForOverride
protected fun handleSetVolume(
volume: @FloatRange(from = 0, to = 1.0) Float,
@C.VolumeOperationType volumeOperationType: Int
): ListenableFuture<Any!>!
Handles calls to setVolume.
Will only be called if COMMAND_SET_VOLUME is available.
| Parameters | |
|---|---|
volume: @FloatRange(from = 0, to = 1.0) Float |
The requested audio volume, with 0 being silence and 1 being unity gain (signal unchanged). |
@C.VolumeOperationType volumeOperationType: Int |
The |
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
handleStop
@ForOverride
protected fun handleStop(): ListenableFuture<Any!>!
Handles calls to stop.
Will only be called if COMMAND_STOP is available.
| Returns | |
|---|---|
ListenableFuture<Any!>! |
A |
invalidateState
protected fun invalidateState(): Unit
Invalidates the current state.
Triggers a call to getState and informs listeners if the state changed.
Note that this may not have an immediate effect while there are still player methods being handled asynchronously. The state will be invalidated automatically once these pending synchronous operations are finished and there is no need to call this method again.
seekTo
protected fun seekTo(
mediaItemIndex: Int,
positionMs: Long,
@Player.Command seekCommand: Int,
isRepeatingCurrentItem: Boolean
): Unit
Seeks to a position in the specified MediaItem.
| Parameters | |
|---|---|
mediaItemIndex: Int |
The index of the |
positionMs: Long |
The seek position in the specified |
@Player.Command seekCommand: Int |
The |
isRepeatingCurrentItem: Boolean |
Whether this seeks repeats the current item. |
verifyApplicationThread
protected fun verifyApplicationThread(): Unit
Throws an IllegalStateException if the the thread calling this method does not match the Looper thread that was specified upon construction of this instance.
Subclasses can use this method to verify that their own defined methods are also accessed by the correct thread.