Class BasePlayer
- java.lang.Object
-
- com.google.android.exoplayer2.BasePlayer
-
- All Implemented Interfaces:
Player
- Direct Known Subclasses:
CastPlayer,SimpleExoPlayer,StubExoPlayer
public abstract class BasePlayer extends Object implements Player
Abstract basePlayerwhich implements common implementation independent methods.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Player
Player.Command, Player.Commands, Player.DiscontinuityReason, Player.EventFlags, Player.EventListener, Player.Events, Player.Listener, Player.MediaItemTransitionReason, Player.PlaybackSuppressionReason, Player.PlayWhenReadyChangeReason, Player.PositionInfo, Player.RepeatMode, Player.State, Player.TimelineChangeReason
-
-
Field Summary
Fields Modifier and Type Field Description protected Timeline.Windowwindow-
Fields inherited from interface com.google.android.exoplayer2.Player
COMMAND_ADJUST_DEVICE_VOLUME, COMMAND_CHANGE_MEDIA_ITEMS, COMMAND_GET_AUDIO_ATTRIBUTES, COMMAND_GET_CURRENT_MEDIA_ITEM, COMMAND_GET_DEVICE_VOLUME, COMMAND_GET_MEDIA_ITEMS, COMMAND_GET_MEDIA_ITEMS_METADATA, COMMAND_GET_TEXT, COMMAND_GET_VOLUME, COMMAND_PLAY_PAUSE, COMMAND_PREPARE_STOP, COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, COMMAND_SEEK_TO_DEFAULT_POSITION, COMMAND_SEEK_TO_MEDIA_ITEM, COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, COMMAND_SET_DEVICE_VOLUME, COMMAND_SET_REPEAT_MODE, COMMAND_SET_SHUFFLE_MODE, COMMAND_SET_SPEED_AND_PITCH, COMMAND_SET_VIDEO_SURFACE, COMMAND_SET_VOLUME, DISCONTINUITY_REASON_AUTO_TRANSITION, DISCONTINUITY_REASON_INTERNAL, DISCONTINUITY_REASON_REMOVE, DISCONTINUITY_REASON_SEEK, DISCONTINUITY_REASON_SEEK_ADJUSTMENT, DISCONTINUITY_REASON_SKIP, EVENT_AVAILABLE_COMMANDS_CHANGED, EVENT_IS_LOADING_CHANGED, EVENT_IS_PLAYING_CHANGED, EVENT_MEDIA_ITEM_TRANSITION, EVENT_MEDIA_METADATA_CHANGED, EVENT_PLAY_WHEN_READY_CHANGED, EVENT_PLAYBACK_PARAMETERS_CHANGED, EVENT_PLAYBACK_STATE_CHANGED, EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, EVENT_PLAYER_ERROR, EVENT_POSITION_DISCONTINUITY, EVENT_REPEAT_MODE_CHANGED, EVENT_SHUFFLE_MODE_ENABLED_CHANGED, EVENT_STATIC_METADATA_CHANGED, EVENT_TIMELINE_CHANGED, EVENT_TRACKS_CHANGED, MEDIA_ITEM_TRANSITION_REASON_AUTO, MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED, MEDIA_ITEM_TRANSITION_REASON_REPEAT, MEDIA_ITEM_TRANSITION_REASON_SEEK, PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY, PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS, PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM, PLAY_WHEN_READY_CHANGE_REASON_REMOTE, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, PLAYBACK_SUPPRESSION_REASON_NONE, PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS, REPEAT_MODE_ALL, REPEAT_MODE_OFF, REPEAT_MODE_ONE, STATE_BUFFERING, STATE_ENDED, STATE_IDLE, STATE_READY, TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, TIMELINE_CHANGE_REASON_SOURCE_UPDATE
-
-
Constructor Summary
Constructors Constructor Description BasePlayer()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddMediaItem(int index, MediaItem mediaItem)Adds a media item at the given index of the playlist.voidaddMediaItem(MediaItem mediaItem)Adds a media item to the end of the playlist.voidaddMediaItems(List<MediaItem> mediaItems)Adds a list of media items to the end of the playlist.voidclearMediaItems()Clears the playlist.protected Player.CommandsgetAvailableCommands(Player.Commands permanentAvailableCommands)intgetBufferedPercentage()Returns an estimate of the percentage in the current content window or ad up to which data is buffered, or 0 if no estimate is available.longgetContentDuration()IfPlayer.isPlayingAd()returnstrue, returns the duration of the current content window in milliseconds, orC.TIME_UNSETif the duration is not known.longgetCurrentLiveOffset()Returns the offset of the current playback position from the live edge in milliseconds, orC.TIME_UNSETif the current windowisn't liveor the offset is unknown.ObjectgetCurrentManifest()Returns the current manifest.MediaItemgetCurrentMediaItem()Returns the media item of the current window in the timeline.ObjectgetCurrentTag()Deprecated.UsegetCurrentMediaItem()andMediaItem.PlaybackProperties.taginstead.MediaItemgetMediaItemAt(int index)Returns theMediaItemat the given index.intgetMediaItemCount()Returns the number ofmedia itemsin the playlist.intgetNextWindowIndex()Returns the index of the window that will be played ifPlayer.next()is called, which may depend on the current repeat mode and whether shuffle mode is enabled.ExoPlaybackExceptiongetPlaybackError()Deprecated.UsePlayer.getPlayerError()instead.intgetPreviousWindowIndex()Returns the index of the window that will be played ifPlayer.previous()is called, which may depend on the current repeat mode and whether shuffle mode is enabled.booleanhasNext()Returns whether a next window exists, which may depend on the current repeat mode and whether shuffle mode is enabled.booleanhasPrevious()Returns whether a previous window exists, which may depend on the current repeat mode and whether shuffle mode is enabled.booleanisCommandAvailable(int command)Returns whether the providedPlayer.Commandis available.booleanisCurrentWindowDynamic()Returns whether the current window is dynamic, orfalseif theTimelineis empty.booleanisCurrentWindowLive()Returns whether the current window is live, orfalseif theTimelineis empty.booleanisCurrentWindowSeekable()Returns whether the current window is seekable, orfalseif theTimelineis empty.booleanisPlaying()Returns whether the player is playing, i.e.voidmoveMediaItem(int currentIndex, int newIndex)Moves the media item at the current index to the new index.voidnext()Seeks to the default position of the next window, which may depend on the current repeat mode and whether shuffle mode is enabled.voidpause()Pauses playback.voidplay()Resumes playback as soon asPlayer.getPlaybackState()==Player.STATE_READY.voidprevious()Seeks to the default position of the previous window, which may depend on the current repeat mode and whether shuffle mode is enabled.voidremoveMediaItem(int index)Removes the media item at the given index of the playlist.voidseekTo(long positionMs)Seeks to a position specified in milliseconds in the current window.voidseekToDefaultPosition()Seeks to the default position associated with the current window.voidseekToDefaultPosition(int windowIndex)Seeks to the default position associated with the specified window.voidsetMediaItem(MediaItem mediaItem)Clears the playlist, adds the specifiedMediaItemand resets the position to the default position.voidsetMediaItem(MediaItem mediaItem, boolean resetPosition)Clears the playlist and adds the specifiedMediaItem.voidsetMediaItem(MediaItem mediaItem, long startPositionMs)Clears the playlist and adds the specifiedMediaItem.voidsetMediaItems(List<MediaItem> mediaItems)Clears the playlist, adds the specifiedMediaItemsand resets the position to the default position.voidsetPlaybackSpeed(float speed)Changes the rate at which playback occurs.voidstop()Stops playback without resetting the player.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.google.android.exoplayer2.Player
addListener, addListener, addMediaItems, clearVideoSurface, clearVideoSurface, clearVideoSurfaceHolder, clearVideoSurfaceView, clearVideoTextureView, decreaseDeviceVolume, getApplicationLooper, getAudioAttributes, getAvailableCommands, getBufferedPosition, getContentBufferedPosition, getContentPosition, getCurrentAdGroupIndex, getCurrentAdIndexInAdGroup, getCurrentCues, getCurrentPeriodIndex, getCurrentPosition, getCurrentStaticMetadata, getCurrentTimeline, getCurrentTrackGroups, getCurrentTrackSelections, getCurrentWindowIndex, getDeviceInfo, getDeviceVolume, getDuration, getMediaMetadata, getPlaybackParameters, getPlaybackState, getPlaybackSuppressionReason, getPlayerError, getPlayWhenReady, getRepeatMode, getShuffleModeEnabled, getTotalBufferedDuration, getVideoSize, getVolume, increaseDeviceVolume, isDeviceMuted, isLoading, isPlayingAd, moveMediaItems, prepare, release, removeListener, removeListener, removeMediaItems, seekTo, setDeviceMuted, setDeviceVolume, setMediaItems, setMediaItems, setPlaybackParameters, setPlayWhenReady, setRepeatMode, setShuffleModeEnabled, setVideoSurface, setVideoSurfaceHolder, setVideoSurfaceView, setVideoTextureView, setVolume, stop
-
-
-
-
Field Detail
-
window
protected final Timeline.Window window
-
-
Method Detail
-
setMediaItem
public final void setMediaItem(MediaItem mediaItem)
Description copied from interface:PlayerClears the playlist, adds the specifiedMediaItemand resets the position to the default position.- Specified by:
setMediaItemin interfacePlayer- Parameters:
mediaItem- The newMediaItem.
-
setMediaItem
public final void setMediaItem(MediaItem mediaItem, long startPositionMs)
Description copied from interface:PlayerClears the playlist and adds the specifiedMediaItem.- Specified by:
setMediaItemin interfacePlayer- Parameters:
mediaItem- The newMediaItem.startPositionMs- The position in milliseconds to start playback from.
-
setMediaItem
public final void setMediaItem(MediaItem mediaItem, boolean resetPosition)
Description copied from interface:PlayerClears the playlist and adds the specifiedMediaItem.- Specified by:
setMediaItemin interfacePlayer- Parameters:
mediaItem- The newMediaItem.resetPosition- Whether the playback position should be reset to the default position. If false, playback will start from the position defined byPlayer.getCurrentWindowIndex()andPlayer.getCurrentPosition().
-
setMediaItems
public final void setMediaItems(List<MediaItem> mediaItems)
Description copied from interface:PlayerClears the playlist, adds the specifiedMediaItemsand resets the position to the default position.- Specified by:
setMediaItemsin interfacePlayer- Parameters:
mediaItems- The newMediaItems.
-
addMediaItem
public final void addMediaItem(int index, MediaItem mediaItem)Description copied from interface:PlayerAdds a media item at the given index of the playlist.- Specified by:
addMediaItemin interfacePlayer- Parameters:
index- The index at which to add the media item. If the index is larger than the size of the playlist, the media item is added to the end of the playlist.mediaItem- TheMediaItemto add.
-
addMediaItem
public final void addMediaItem(MediaItem mediaItem)
Description copied from interface:PlayerAdds a media item to the end of the playlist.- Specified by:
addMediaItemin interfacePlayer- Parameters:
mediaItem- TheMediaItemto add.
-
addMediaItems
public final void addMediaItems(List<MediaItem> mediaItems)
Description copied from interface:PlayerAdds a list of media items to the end of the playlist.- Specified by:
addMediaItemsin interfacePlayer- Parameters:
mediaItems- TheMediaItemsto add.
-
moveMediaItem
public final void moveMediaItem(int currentIndex, int newIndex)Description copied from interface:PlayerMoves the media item at the current index to the new index.- Specified by:
moveMediaItemin interfacePlayer- Parameters:
currentIndex- The current index of the media item to move.newIndex- The new index of the media item. If the new index is larger than the size of the playlist the item is moved to the end of the playlist.
-
removeMediaItem
public final void removeMediaItem(int index)
Description copied from interface:PlayerRemoves the media item at the given index of the playlist.- Specified by:
removeMediaItemin interfacePlayer- Parameters:
index- The index at which to remove the media item.
-
clearMediaItems
public final void clearMediaItems()
Description copied from interface:PlayerClears the playlist.- Specified by:
clearMediaItemsin interfacePlayer
-
isCommandAvailable
public final boolean isCommandAvailable(@Command int command)
Description copied from interface:PlayerReturns whether the providedPlayer.Commandis available.This method does not execute the command.
Executing a command that is not available (for example, calling
Player.next()ifPlayer.COMMAND_SEEK_TO_NEXT_MEDIA_ITEMis unavailable) will neither throw an exception nor generate aPlayer.getPlayerError()player error}.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEMandPlayer.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEMare unavailable if there is no suchMediaItem.- Specified by:
isCommandAvailablein interfacePlayer- Parameters:
command- APlayer.Command.- Returns:
- Whether the
Player.Commandis available. - See Also:
Player.EventListener.onAvailableCommandsChanged(Commands)
-
getPlaybackError
@Deprecated @Nullable public final ExoPlaybackException getPlaybackError()
Deprecated.UsePlayer.getPlayerError()instead.- Specified by:
getPlaybackErrorin interfacePlayer
-
play
public final void play()
Description copied from interface:PlayerResumes playback as soon asPlayer.getPlaybackState()==Player.STATE_READY. Equivalent tosetPlayWhenReady(true).
-
pause
public final void pause()
Description copied from interface:PlayerPauses playback. Equivalent tosetPlayWhenReady(false).
-
isPlaying
public final boolean isPlaying()
Description copied from interface:PlayerReturns whether the player is playing, i.e.Player.getCurrentPosition()is advancing.If
false, then at least one of the following is true:- The
playback stateis notready. - There is no
intention to play. - Playback is
suppressed for other reasons.
- Specified by:
isPlayingin interfacePlayer- Returns:
- Whether the player is playing.
- See Also:
Player.EventListener.onIsPlayingChanged(boolean)
- The
-
seekToDefaultPosition
public final void seekToDefaultPosition()
Description copied from interface:PlayerSeeks to the default position associated with the current window. The position can depend on the type of media being played. For live streams it will typically be the live edge of the window. For other streams it will typically be the start of the window.- Specified by:
seekToDefaultPositionin interfacePlayer
-
seekToDefaultPosition
public final void seekToDefaultPosition(int windowIndex)
Description copied from interface:PlayerSeeks to the default position associated with the specified window. The position can depend on the type of media being played. For live streams it will typically be the live edge of the window. For other streams it will typically be the start of the window.- Specified by:
seekToDefaultPositionin interfacePlayer- Parameters:
windowIndex- The index of the window whose associated default position should be seeked to.
-
seekTo
public final void seekTo(long positionMs)
Description copied from interface:PlayerSeeks to a position specified in milliseconds in the current window.- Specified by:
seekToin interfacePlayer- Parameters:
positionMs- The seek position in the current window, orC.TIME_UNSETto seek to the window's default position.
-
hasPrevious
public final boolean hasPrevious()
Description copied from interface:PlayerReturns whether a previous window exists, which may depend on the current repeat mode and whether shuffle mode is enabled.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.- Specified by:
hasPreviousin interfacePlayer
-
previous
public final void previous()
Description copied from interface:PlayerSeeks to the default position of the previous window, which may depend on the current repeat mode and whether shuffle mode is enabled. Does nothing ifPlayer.hasPrevious()isfalse.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.
-
hasNext
public final boolean hasNext()
Description copied from interface:PlayerReturns whether a next window exists, which may depend on the current repeat mode and whether shuffle mode is enabled.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.
-
next
public final void next()
Description copied from interface:PlayerSeeks to the default position of the next window, which may depend on the current repeat mode and whether shuffle mode is enabled. Does nothing ifPlayer.hasNext()isfalse.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.
-
setPlaybackSpeed
public final void setPlaybackSpeed(float speed)
Description copied from interface:PlayerChanges the rate at which playback occurs. The pitch is not changed.This is equivalent to
setPlaybackParameters(getPlaybackParameters().withSpeed(speed)).- Specified by:
setPlaybackSpeedin interfacePlayer- Parameters:
speed- The linear factor by which playback will be sped up. Must be higher than 0. 1 is normal speed, 2 is twice as fast, 0.5 is half normal speed...
-
stop
public final void stop()
Description copied from interface:PlayerStops playback without resetting the player. UsePlayer.pause()rather than this method if the intention is to pause playback.Calling this method will cause the playback state to transition to
Player.STATE_IDLE. The player instance can still be used, andPlayer.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.
-
getNextWindowIndex
public final int getNextWindowIndex()
Description copied from interface:PlayerReturns the index of the window that will be played ifPlayer.next()is called, which may depend on the current repeat mode and whether shuffle mode is enabled. ReturnsC.INDEX_UNSETifPlayer.hasNext()isfalse.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.- Specified by:
getNextWindowIndexin interfacePlayer
-
getPreviousWindowIndex
public final int getPreviousWindowIndex()
Description copied from interface:PlayerReturns the index of the window that will be played ifPlayer.previous()is called, which may depend on the current repeat mode and whether shuffle mode is enabled. ReturnsC.INDEX_UNSETifPlayer.hasPrevious()isfalse.Note: When the repeat mode is
Player.REPEAT_MODE_ONE, this method behaves the same as when the current repeat mode isPlayer.REPEAT_MODE_OFF. SeePlayer.REPEAT_MODE_ONEfor more details.- Specified by:
getPreviousWindowIndexin interfacePlayer
-
getCurrentTag
@Deprecated @Nullable public final Object getCurrentTag()
Deprecated.UsegetCurrentMediaItem()andMediaItem.PlaybackProperties.taginstead.- Specified by:
getCurrentTagin interfacePlayer
-
getCurrentMediaItem
@Nullable public final MediaItem getCurrentMediaItem()
Description copied from interface:PlayerReturns the media item of the current window in the timeline. May be null if the timeline is empty.- Specified by:
getCurrentMediaItemin interfacePlayer- See Also:
Player.EventListener.onMediaItemTransition(MediaItem, int)
-
getMediaItemCount
public final int getMediaItemCount()
Description copied from interface:PlayerReturns the number ofmedia itemsin the playlist.- Specified by:
getMediaItemCountin interfacePlayer
-
getMediaItemAt
public final MediaItem getMediaItemAt(int index)
Description copied from interface:PlayerReturns theMediaItemat the given index.- Specified by:
getMediaItemAtin interfacePlayer
-
getCurrentManifest
@Nullable public final Object getCurrentManifest()
Description copied from interface:PlayerReturns the current manifest. The type depends on the type of media being played. May be null.- Specified by:
getCurrentManifestin interfacePlayer
-
getBufferedPercentage
public final int getBufferedPercentage()
Description copied from interface:PlayerReturns an estimate of the percentage in the current content window or ad up to which data is buffered, or 0 if no estimate is available.- Specified by:
getBufferedPercentagein interfacePlayer
-
isCurrentWindowDynamic
public final boolean isCurrentWindowDynamic()
Description copied from interface:PlayerReturns whether the current window is dynamic, orfalseif theTimelineis empty.- Specified by:
isCurrentWindowDynamicin interfacePlayer- See Also:
Timeline.Window.isDynamic
-
isCurrentWindowLive
public final boolean isCurrentWindowLive()
Description copied from interface:PlayerReturns whether the current window is live, orfalseif theTimelineis empty.- Specified by:
isCurrentWindowLivein interfacePlayer- See Also:
Timeline.Window.isLive()
-
getCurrentLiveOffset
public final long getCurrentLiveOffset()
Description copied from interface:PlayerReturns the offset of the current playback position from the live edge in milliseconds, orC.TIME_UNSETif the current windowisn't liveor the offset is unknown.The offset is calculated as
currentTime - playbackPosition, so should usually be positive.Note that this offset may rely on an accurate local time, so this method may return an incorrect value if the difference between system clock and server clock is unknown.
- Specified by:
getCurrentLiveOffsetin interfacePlayer
-
isCurrentWindowSeekable
public final boolean isCurrentWindowSeekable()
Description copied from interface:PlayerReturns whether the current window is seekable, orfalseif theTimelineis empty.- Specified by:
isCurrentWindowSeekablein interfacePlayer- See Also:
Timeline.Window.isSeekable
-
getContentDuration
public final long getContentDuration()
Description copied from interface:PlayerIfPlayer.isPlayingAd()returnstrue, returns the duration of the current content window in milliseconds, orC.TIME_UNSETif the duration is not known. If there is no ad playing, the returned duration is the same as that returned byPlayer.getDuration().- Specified by:
getContentDurationin interfacePlayer
-
getAvailableCommands
protected Player.Commands getAvailableCommands(Player.Commands permanentAvailableCommands)
-
-