Package com.google.android.exoplayer2.testutil

## Class StubExoPlayer

- java.lang.Object
- - com.google.android.exoplayer2.BasePlayer
  - - com.google.android.exoplayer2.testutil.StubPlayer
    - - com.google.android.exoplayer2.testutil.StubExoPlayer

- All Implemented Interfaces:
    `ExoPlayer`, `Player`

      public class StubExoPlayer
      extends StubPlayer
      implements ExoPlayer

  An abstract `ExoPlayer` implementation that throws `UnsupportedOperationException` from every method.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.ExoPlayer

      `ExoPlayer.AudioComponent, ExoPlayer.AudioOffloadListener, ExoPlayer.Builder, ExoPlayer.DeviceComponent, ExoPlayer.TextComponent, ExoPlayer.VideoComponent`

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Player

      `Player.Command, Player.Commands, Player.DiscontinuityReason, Player.Event, Player.Events, Player.Listener, Player.MediaItemTransitionReason, Player.PlaybackSuppressionReason, Player.PlayWhenReadyChangeReason, Player.PositionInfo, Player.RepeatMode, Player.State, Player.TimelineChangeReason`

  - ### Field Summary

    - ### Fields inherited from class com.google.android.exoplayer2.BasePlayer

      `window`

    - ### Fields inherited from interface com.google.android.exoplayer2.ExoPlayer

      `DEFAULT_DETACH_SURFACE_TIMEOUT_MS, DEFAULT_RELEASE_TIMEOUT_MS`

    - ### 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_METADATA, COMMAND_GET_TEXT, COMMAND_GET_TIMELINE, COMMAND_GET_TRACKS, COMMAND_GET_VOLUME, COMMAND_INVALID, COMMAND_PLAY_PAUSE, COMMAND_PREPARE, COMMAND_SEEK_BACK, COMMAND_SEEK_FORWARD, COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, COMMAND_SEEK_IN_CURRENT_WINDOW, COMMAND_SEEK_TO_DEFAULT_POSITION, COMMAND_SEEK_TO_MEDIA_ITEM, COMMAND_SEEK_TO_NEXT, COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, COMMAND_SEEK_TO_NEXT_WINDOW, COMMAND_SEEK_TO_PREVIOUS, COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, COMMAND_SEEK_TO_PREVIOUS_WINDOW, COMMAND_SEEK_TO_WINDOW, COMMAND_SET_DEVICE_VOLUME, COMMAND_SET_MEDIA_ITEM, COMMAND_SET_MEDIA_ITEMS_METADATA, COMMAND_SET_REPEAT_MODE, COMMAND_SET_SHUFFLE_MODE, COMMAND_SET_SPEED_AND_PITCH, COMMAND_SET_TRACK_SELECTION_PARAMETERS, COMMAND_SET_VIDEO_SURFACE, COMMAND_SET_VOLUME, COMMAND_STOP, DISCONTINUITY_REASON_AUTO_TRANSITION, DISCONTINUITY_REASON_INTERNAL, DISCONTINUITY_REASON_REMOVE, DISCONTINUITY_REASON_SEEK, DISCONTINUITY_REASON_SEEK_ADJUSTMENT, DISCONTINUITY_REASON_SKIP, EVENT_AUDIO_ATTRIBUTES_CHANGED, EVENT_AUDIO_SESSION_ID, EVENT_AVAILABLE_COMMANDS_CHANGED, EVENT_CUES, EVENT_DEVICE_INFO_CHANGED, EVENT_DEVICE_VOLUME_CHANGED, EVENT_IS_LOADING_CHANGED, EVENT_IS_PLAYING_CHANGED, EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED, EVENT_MEDIA_ITEM_TRANSITION, EVENT_MEDIA_METADATA_CHANGED, EVENT_METADATA, EVENT_PLAY_WHEN_READY_CHANGED, EVENT_PLAYBACK_PARAMETERS_CHANGED, EVENT_PLAYBACK_STATE_CHANGED, EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, EVENT_PLAYER_ERROR, EVENT_PLAYLIST_METADATA_CHANGED, EVENT_POSITION_DISCONTINUITY, EVENT_RENDERED_FIRST_FRAME, EVENT_REPEAT_MODE_CHANGED, EVENT_SEEK_BACK_INCREMENT_CHANGED, EVENT_SEEK_FORWARD_INCREMENT_CHANGED, EVENT_SHUFFLE_MODE_ENABLED_CHANGED, EVENT_SKIP_SILENCE_ENABLED_CHANGED, EVENT_SURFACE_SIZE_CHANGED, EVENT_TIMELINE_CHANGED, EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, EVENT_TRACKS_CHANGED, EVENT_VIDEO_SIZE_CHANGED, EVENT_VOLUME_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
    --- | ---
    `StubExoPlayer()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addAnalyticsListener​(AnalyticsListener listener)` | Adds an `AnalyticsListener` to receive analytics events.
    `void` | `addAudioOffloadListener​(ExoPlayer.AudioOffloadListener listener)` | Adds a listener to receive audio offload events.
    `void` | `addMediaSource​(int index, MediaSource mediaSource)` | Adds a media source at the given index of the playlist.
    `void` | `addMediaSource​(MediaSource mediaSource)` | Adds a media source to the end of the playlist.
    `void` | `addMediaSources​(int index, List<MediaSource> mediaSources)` | Adds a list of media sources at the given index of the playlist.
    `void` | `addMediaSources​(List<MediaSource> mediaSources)` | Adds a list of media sources to the end of the playlist.
    `void` | `clearAuxEffectInfo()` | Detaches any previously attached auxiliary audio effect from the underlying audio track.
    `void` | `clearCameraMotionListener​(CameraMotionListener listener)` | Clears the listener which receives camera motion events if it matches the one passed.
    `void` | `clearVideoFrameMetadataListener​(VideoFrameMetadataListener listener)` | Clears the listener which receives video frame metadata events if it matches the one passed.
    `PlayerMessage` | `createMessage​(PlayerMessage.Target target)` | Creates a message that can be sent to a `PlayerMessage.Target`.
    `boolean` | `experimentalIsSleepingForOffload()` | Returns whether the player has paused its main loop to save power in offload scheduling mode.
    `void` | `experimentalSetOffloadSchedulingEnabled​(boolean offloadSchedulingEnabled)` | Sets whether audio offload scheduling is enabled.
    `AnalyticsCollector` | `getAnalyticsCollector()` | Returns the `AnalyticsCollector` used for collecting analytics events.
    `ExoPlayer.AudioComponent` | `getAudioComponent()` | Deprecated. Use `ExoPlayer`, as the `ExoPlayer.AudioComponent` methods are defined by that interface.
    `DecoderCounters` | `getAudioDecoderCounters()` | Returns `DecoderCounters` for audio, or null if no audio is being played.
    `Format` | `getAudioFormat()` | Returns the audio format currently being played, or null if no audio is being played.
    `int` | `getAudioSessionId()` | Returns the audio session identifier, or `C.AUDIO_SESSION_ID_UNSET` if not set.
    `Clock` | `getClock()` | Returns the `Clock` used for playback.
    `TrackGroupArray` | `getCurrentTrackGroups()` | Deprecated. Use `StubPlayer.getCurrentTracks()`.
    `TrackSelectionArray` | `getCurrentTrackSelections()` | Deprecated. Use `StubPlayer.getCurrentTracks()`.
    `ExoPlayer.DeviceComponent` | `getDeviceComponent()` | Deprecated. Use `Player`, as the `ExoPlayer.DeviceComponent` methods are defined by that interface.
    `boolean` | `getPauseAtEndOfMediaItems()` | Returns whether the player pauses playback at the end of each media item.
    `Looper` | `getPlaybackLooper()` | Returns the `Looper` associated with the playback thread.
    `ExoPlaybackException` | `getPlayerError()` | Returns the error that caused playback to fail.
    `Renderer` | `getRenderer​(int index)` | Returns the renderer at the given index.
    `int` | `getRendererCount()` | Returns the number of renderers.
    `int` | `getRendererType​(int index)` | Returns the track type that the renderer at a given index handles.
    `SeekParameters` | `getSeekParameters()` | Returns the currently active `SeekParameters` of the player.
    `boolean` | `getSkipSilenceEnabled()` | Returns whether skipping silences in the audio stream is enabled.
    `ExoPlayer.TextComponent` | `getTextComponent()` | Deprecated. Use `Player`, as the `ExoPlayer.TextComponent` methods are defined by that interface.
    `TrackSelector` | `getTrackSelector()` | Returns the track selector that this player uses, or null if track selection is not supported.
    `int` | `getVideoChangeFrameRateStrategy()` | Returns the `C.VideoChangeFrameRateStrategy`.
    `ExoPlayer.VideoComponent` | `getVideoComponent()` | Deprecated. Use `ExoPlayer`, as the `ExoPlayer.VideoComponent` methods are defined by that interface.
    `DecoderCounters` | `getVideoDecoderCounters()` | Returns `DecoderCounters` for video, or null if no video is being played.
    `Format` | `getVideoFormat()` | Returns the video format currently being played, or null if no video is being played.
    `int` | `getVideoScalingMode()` | Returns the `C.VideoScalingMode`.
    `boolean` | `isTunnelingEnabled()` | Returns whether tunneling is enabled for the currently selected tracks.
    `void` | `prepare​(MediaSource mediaSource)` | Deprecated. Use `setMediaSource(MediaSource)` and `StubPlayer.prepare()` instead.
    `void` | `prepare​(MediaSource mediaSource, boolean resetPosition, boolean resetState)` | Deprecated. Use `setMediaSource(MediaSource, boolean)` and `StubPlayer.prepare()` instead.
    `void` | `removeAnalyticsListener​(AnalyticsListener listener)` | Removes an `AnalyticsListener`.
    `void` | `removeAudioOffloadListener​(ExoPlayer.AudioOffloadListener listener)` | Removes a listener of audio offload events.
    `void` | `retry()` | Deprecated. Use `StubPlayer.prepare()` instead.
    `void` | `setAudioAttributes​(AudioAttributes audioAttributes, boolean handleAudioFocus)` | Sets the attributes for audio playback, used by the underlying audio track.
    `void` | `setAudioSessionId​(int audioSessionId)` | Sets the ID of the audio session to attach to the underlying `AudioTrack`.
    `void` | `setAuxEffectInfo​(AuxEffectInfo auxEffectInfo)` | Sets information on an auxiliary audio effect to attach to the underlying audio track.
    `void` | `setCameraMotionListener​(CameraMotionListener listener)` | Sets a listener of camera motion events.
    `void` | `setForegroundMode​(boolean foregroundMode)` | Sets whether the player is allowed to keep holding limited resources such as video decoders, even when in the idle state.
    `void` | `setHandleAudioBecomingNoisy​(boolean handleAudioBecomingNoisy)` | Sets whether the player should pause automatically when audio is rerouted from a headset to device speakers.
    `void` | `setHandleWakeLock​(boolean handleWakeLock)` | Deprecated. Use `setWakeMode(int)` instead.
    `void` | `setMediaSource​(MediaSource mediaSource)` | Clears the playlist, adds the specified `MediaSource` and resets the position to the default position.
    `void` | `setMediaSource​(MediaSource mediaSource, boolean resetPosition)` | Clears the playlist and adds the specified `MediaSource`.
    `void` | `setMediaSource​(MediaSource mediaSource, long startPositionMs)` | Clears the playlist and adds the specified `MediaSource`.
    `void` | `setMediaSources​(List<MediaSource> mediaSources)` | Clears the playlist, adds the specified `MediaSources` and resets the position to the default position.
    `void` | `setMediaSources​(List<MediaSource> mediaSources, boolean resetPosition)` | Clears the playlist and adds the specified `MediaSources`.
    `void` | `setMediaSources​(List<MediaSource> mediaSources, int startMediaItemIndex, long startPositionMs)` | Clears the playlist and adds the specified `MediaSources`.
    `void` | `setPauseAtEndOfMediaItems​(boolean pauseAtEndOfMediaItems)` | Sets whether to pause playback at the end of each media item.
    `void` | `setPreferredAudioDevice​(AudioDeviceInfo audioDeviceInfo)` | Sets the preferred audio device.
    `void` | `setPriorityTaskManager​(PriorityTaskManager priorityTaskManager)` | Sets a `PriorityTaskManager`, or null to clear a previously set priority task manager.
    `void` | `setSeekParameters​(SeekParameters seekParameters)` | Sets the parameters that control how seek operations are performed.
    `void` | `setShuffleOrder​(ShuffleOrder shuffleOrder)` | Sets the shuffle order.
    `void` | `setSkipSilenceEnabled​(boolean skipSilenceEnabled)` | Sets whether skipping silences in the audio stream is enabled.
    `void` | `setVideoChangeFrameRateStrategy​(int videoChangeFrameRateStrategy)` | Sets a `C.VideoChangeFrameRateStrategy` that will be used by the player when provided with a video output `Surface`.
    `void` | `setVideoFrameMetadataListener​(VideoFrameMetadataListener listener)` | Sets a listener to receive video frame metadata events.
    `void` | `setVideoScalingMode​(int videoScalingMode)` | Sets the `C.VideoScalingMode`.
    `void` | `setWakeMode​(int wakeMode)` | Sets how the player should keep the device awake for playback when the screen is off.

    - ### Methods inherited from class com.google.android.exoplayer2.testutil.StubPlayer

      `addListener, addMediaItems, clearVideoSurface, clearVideoSurface, clearVideoSurfaceHolder, clearVideoSurfaceView, clearVideoTextureView, decreaseDeviceVolume, getApplicationLooper, getAudioAttributes, getAvailableCommands, getBufferedPosition, getContentBufferedPosition, getContentPosition, getCurrentAdGroupIndex, getCurrentAdIndexInAdGroup, getCurrentCues, getCurrentMediaItemIndex, getCurrentPeriodIndex, getCurrentPosition, getCurrentTimeline, getCurrentTracks, getDeviceInfo, getDeviceVolume, getDuration, getMaxSeekToPreviousPosition, getMediaMetadata, getPlaybackParameters, getPlaybackState, getPlaybackSuppressionReason, getPlaylistMetadata, getPlayWhenReady, getRepeatMode, getSeekBackIncrement, getSeekForwardIncrement, getShuffleModeEnabled, getSurfaceSize, getTotalBufferedDuration, getTrackSelectionParameters, getVideoSize, getVolume, increaseDeviceVolume, isDeviceMuted, isLoading, isPlayingAd, moveMediaItems, prepare, release, removeListener, removeMediaItems, seekTo, setDeviceMuted, setDeviceVolume, setMediaItems, setMediaItems, setPlaybackParameters, setPlaylistMetadata, setPlayWhenReady, setRepeatMode, setShuffleModeEnabled, setTrackSelectionParameters, setVideoSurface, setVideoSurfaceHolder, setVideoSurfaceView, setVideoTextureView, setVolume, stop, stop`

    - ### Methods inherited from class com.google.android.exoplayer2.BasePlayer

      `addMediaItem, addMediaItem, addMediaItems, canAdvertiseSession, clearMediaItems, getBufferedPercentage, getContentDuration, getCurrentLiveOffset, getCurrentManifest, getCurrentMediaItem, getCurrentWindowIndex, getMediaItemAt, getMediaItemCount, getNextMediaItemIndex, getNextWindowIndex, getPreviousMediaItemIndex, getPreviousWindowIndex, hasNext, hasNextMediaItem, hasNextWindow, hasPrevious, hasPreviousMediaItem, hasPreviousWindow, isCommandAvailable, isCurrentMediaItemDynamic, isCurrentMediaItemLive, isCurrentMediaItemSeekable, isCurrentWindowDynamic, isCurrentWindowLive, isCurrentWindowSeekable, isPlaying, moveMediaItem, next, pause, play, previous, removeMediaItem, seekBack, seekForward, seekTo, seekTo, seekToDefaultPosition, seekToDefaultPosition, seekToNext, seekToNextMediaItem, seekToNextWindow, seekToPrevious, seekToPreviousMediaItem, seekToPreviousWindow, setMediaItem, setMediaItem, setMediaItem, setMediaItems, setPlaybackSpeed`

    - ### 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, addMediaItem, addMediaItem, addMediaItems, addMediaItems, canAdvertiseSession, clearMediaItems, clearVideoSurface, clearVideoSurface, clearVideoSurfaceHolder, clearVideoSurfaceView, clearVideoTextureView, decreaseDeviceVolume, getApplicationLooper, getAudioAttributes, getAvailableCommands, getBufferedPercentage, getBufferedPosition, getContentBufferedPosition, getContentDuration, getContentPosition, getCurrentAdGroupIndex, getCurrentAdIndexInAdGroup, getCurrentCues, getCurrentLiveOffset, getCurrentManifest, getCurrentMediaItem, getCurrentMediaItemIndex, getCurrentPeriodIndex, getCurrentPosition, getCurrentTimeline, getCurrentTracks, getCurrentWindowIndex, getDeviceInfo, getDeviceVolume, getDuration, getMaxSeekToPreviousPosition, getMediaItemAt, getMediaItemCount, getMediaMetadata, getNextMediaItemIndex, getNextWindowIndex, getPlaybackParameters, getPlaybackState, getPlaybackSuppressionReason, getPlaylistMetadata, getPlayWhenReady, getPreviousMediaItemIndex, getPreviousWindowIndex, getRepeatMode, getSeekBackIncrement, getSeekForwardIncrement, getShuffleModeEnabled, getSurfaceSize, getTotalBufferedDuration, getTrackSelectionParameters, getVideoSize, getVolume, hasNext, hasNextMediaItem, hasNextWindow, hasPrevious, hasPreviousMediaItem, hasPreviousWindow, increaseDeviceVolume, isCommandAvailable, isCurrentMediaItemDynamic, isCurrentMediaItemLive, isCurrentMediaItemSeekable, isCurrentWindowDynamic, isCurrentWindowLive, isCurrentWindowSeekable, isDeviceMuted, isLoading, isPlaying, isPlayingAd, moveMediaItem, moveMediaItems, next, pause, play, prepare, previous, release, removeListener, removeMediaItem, removeMediaItems, seekBack, seekForward, seekTo, seekTo, seekToDefaultPosition, seekToDefaultPosition, seekToNext, seekToNextMediaItem, seekToNextWindow, seekToPrevious, seekToPreviousMediaItem, seekToPreviousWindow, setDeviceMuted, setDeviceVolume, setMediaItem, setMediaItem, setMediaItem, setMediaItems, setMediaItems, setMediaItems, setPlaybackParameters, setPlaybackSpeed, setPlaylistMetadata, setPlayWhenReady, setRepeatMode, setShuffleModeEnabled, setTrackSelectionParameters, setVideoSurface, setVideoSurfaceHolder, setVideoSurfaceView, setVideoTextureView, setVolume, stop, stop`

- - ### Constructor Detail

    - #### StubExoPlayer

          public StubExoPlayer()

  - ### Method Detail

    - #### getAudioComponent

          @Deprecated
          public ExoPlayer.AudioComponent getAudioComponent()

      Deprecated.
      Use `ExoPlayer`, as the `ExoPlayer.AudioComponent` methods are defined by that interface.
      Specified by:
        `getAudioComponent` in interface `ExoPlayer`

    - #### getVideoComponent

          @Deprecated
          public ExoPlayer.VideoComponent getVideoComponent()

      Deprecated.
      Use `ExoPlayer`, as the `ExoPlayer.VideoComponent` methods are defined by that interface.
      Specified by:
        `getVideoComponent` in interface `ExoPlayer`

    - #### getTextComponent

          @Deprecated
          public ExoPlayer.TextComponent getTextComponent()

      Deprecated.
      Use `Player`, as the `ExoPlayer.TextComponent` methods are defined by that interface.
      Specified by:
        `getTextComponent` in interface `ExoPlayer`

    - #### getDeviceComponent

          @Deprecated
          public ExoPlayer.DeviceComponent getDeviceComponent()

      Deprecated.
      Use `Player`, as the `ExoPlayer.DeviceComponent` methods are defined by that interface.
      Specified by:
        `getDeviceComponent` in interface `ExoPlayer`

    - #### getPlaybackLooper

          public Looper getPlaybackLooper()

      Description copied from interface: `ExoPlayer`
      Returns the `Looper` associated with the playback thread.

      This method may be called from any thread.

      Specified by:
        `getPlaybackLooper` in interface `ExoPlayer`

    - #### getClock

          public Clock getClock()

      Description copied from interface: `ExoPlayer`
      Returns the `Clock` used for playback.

      This method can be called from any thread.

      Specified by:
        `getClock` in interface `ExoPlayer`

    - #### addAudioOffloadListener

          public void addAudioOffloadListener​(ExoPlayer.AudioOffloadListener listener)

      Description copied from interface: `ExoPlayer`
      Adds a listener to receive audio offload events.

      This method can be called from any thread.

      Specified by:
        `addAudioOffloadListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to register.

    - #### removeAudioOffloadListener

          public void removeAudioOffloadListener​(ExoPlayer.AudioOffloadListener listener)

      Description copied from interface: `ExoPlayer`
      Removes a listener of audio offload events.
      Specified by:
        `removeAudioOffloadListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to unregister.

    - #### getAnalyticsCollector

          public AnalyticsCollector getAnalyticsCollector()

      Description copied from interface: `ExoPlayer`
      Returns the `AnalyticsCollector` used for collecting analytics events.
      Specified by:
        `getAnalyticsCollector` in interface `ExoPlayer`

    - #### addAnalyticsListener

          public void addAnalyticsListener​(AnalyticsListener listener)

      Description copied from interface: `ExoPlayer`
      Adds an `AnalyticsListener` to receive analytics events.

      This method can be called from any thread.

      Specified by:
        `addAnalyticsListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to be added.

    - #### removeAnalyticsListener

          public void removeAnalyticsListener​(AnalyticsListener listener)

      Description copied from interface: `ExoPlayer`
      Removes an `AnalyticsListener`.
      Specified by:
        `removeAnalyticsListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to be removed.

    - #### getPlayerError

          public ExoPlaybackException getPlayerError()

      Description copied from interface: `Player`
      Returns the error that caused playback to fail. This is the same error that will have been reported via `Player.Listener.onPlayerError(PlaybackException)` 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 `Player.getPlaybackState()` is not `Player.STATE_IDLE`.

      Specified by:
        `getPlayerError` in interface `ExoPlayer`
      Specified by:
        `getPlayerError` in interface `Player`
      Overrides:
        `getPlayerError` in class `StubPlayer`
      Returns:
        The error, or `null`.
      See Also:
        `Player.Listener.onPlayerError(PlaybackException)`

    - #### retry

          @Deprecated
          public void retry()

      Deprecated.
      Use `StubPlayer.prepare()` instead.
      Specified by:
        `retry` in interface `ExoPlayer`

    - #### prepare

          @Deprecated
          public void prepare​(MediaSource mediaSource)

      Deprecated.
      Use `setMediaSource(MediaSource)` and `StubPlayer.prepare()` instead.
      Specified by:
        `prepare` in interface `ExoPlayer`

    - #### prepare

          @Deprecated
          public void prepare​(MediaSource mediaSource,
                              boolean resetPosition,
                              boolean resetState)

      Deprecated.
      Use `setMediaSource(MediaSource, boolean)` and `StubPlayer.prepare()` instead.
      Specified by:
        `prepare` in interface `ExoPlayer`

    - #### setMediaSource

          public void setMediaSource​(MediaSource mediaSource)

      Description copied from interface: `ExoPlayer`
      Clears the playlist, adds the specified `MediaSource` and resets the position to the default position.
      Specified by:
        `setMediaSource` in interface `ExoPlayer`
      Parameters:
        `mediaSource` - The new `MediaSource`.

    - #### setMediaSource

          public void setMediaSource​(MediaSource mediaSource,
                                     long startPositionMs)

      Description copied from interface: `ExoPlayer`
      Clears the playlist and adds the specified `MediaSource`.
      Specified by:
        `setMediaSource` in interface `ExoPlayer`
      Parameters:
        `mediaSource` - The new `MediaSource`.
        `startPositionMs` - The position in milliseconds to start playback from.

    - #### setMediaSource

          public void setMediaSource​(MediaSource mediaSource,
                                     boolean resetPosition)

      Description copied from interface: `ExoPlayer`
      Clears the playlist and adds the specified `MediaSource`.
      Specified by:
        `setMediaSource` in interface `ExoPlayer`
      Parameters:
        `mediaSource` - The new `MediaSource`.
        `resetPosition` - Whether the playback position should be reset to the default position. If false, playback will start from the position defined by `Player.getCurrentMediaItemIndex()` and `Player.getCurrentPosition()`.

    - #### setMediaSources

          public void setMediaSources​(List<MediaSource> mediaSources)

      Description copied from interface: `ExoPlayer`
      Clears the playlist, adds the specified `MediaSources` and resets the position to the default position.
      Specified by:
        `setMediaSources` in interface `ExoPlayer`
      Parameters:
        `mediaSources` - The new `MediaSources`.

    - #### setMediaSources

          public void setMediaSources​(List<MediaSource> mediaSources,
                                      boolean resetPosition)

      Description copied from interface: `ExoPlayer`
      Clears the playlist and adds the specified `MediaSources`.
      Specified by:
        `setMediaSources` in interface `ExoPlayer`
      Parameters:
        `mediaSources` - The new `MediaSources`.
        `resetPosition` - Whether the playback position should be reset to the default position in the first `Timeline.Window`. If false, playback will start from the position defined by `Player.getCurrentMediaItemIndex()` and `Player.getCurrentPosition()`.

    - #### setMediaSources

          public void setMediaSources​(List<MediaSource> mediaSources,
                                      int startMediaItemIndex,
                                      long startPositionMs)

      Description copied from interface: `ExoPlayer`
      Clears the playlist and adds the specified `MediaSources`.
      Specified by:
        `setMediaSources` in interface `ExoPlayer`
      Parameters:
        `mediaSources` - The new `MediaSources`.
        `startMediaItemIndex` - The media item index to start playback from. If `C.INDEX_UNSET` is passed, the current position is not reset.
        `startPositionMs` - The position in milliseconds to start playback from. If `C.TIME_UNSET` is passed, the default position of the given media item is used. In any case, if `startMediaItemIndex` is set to `C.INDEX_UNSET`, this parameter is ignored and the position is not reset at all.

    - #### addMediaSource

          public void addMediaSource​(MediaSource mediaSource)

      Description copied from interface: `ExoPlayer`
      Adds a media source to the end of the playlist.
      Specified by:
        `addMediaSource` in interface `ExoPlayer`
      Parameters:
        `mediaSource` - The `MediaSource` to add.

    - #### addMediaSource

          public void addMediaSource​(int index,
                                     MediaSource mediaSource)

      Description copied from interface: `ExoPlayer`
      Adds a media source at the given index of the playlist.
      Specified by:
        `addMediaSource` in interface `ExoPlayer`
      Parameters:
        `index` - The index at which to add the source.
        `mediaSource` - The `MediaSource` to add.

    - #### addMediaSources

          public void addMediaSources​(List<MediaSource> mediaSources)

      Description copied from interface: `ExoPlayer`
      Adds a list of media sources to the end of the playlist.
      Specified by:
        `addMediaSources` in interface `ExoPlayer`
      Parameters:
        `mediaSources` - The `MediaSources` to add.

    - #### addMediaSources

          public void addMediaSources​(int index,
                                      List<MediaSource> mediaSources)

      Description copied from interface: `ExoPlayer`
      Adds a list of media sources at the given index of the playlist.
      Specified by:
        `addMediaSources` in interface `ExoPlayer`
      Parameters:
        `index` - The index at which to add the media sources.
        `mediaSources` - The `MediaSources` to add.

    - #### setShuffleOrder

          public void setShuffleOrder​(ShuffleOrder shuffleOrder)

      Description copied from interface: `ExoPlayer`
      Sets the shuffle order.
      Specified by:
        `setShuffleOrder` in interface `ExoPlayer`
      Parameters:
        `shuffleOrder` - The shuffle order.

    - #### setAudioAttributes

          public void setAudioAttributes​(AudioAttributes audioAttributes,
                                         boolean handleAudioFocus)

      Description copied from interface: `ExoPlayer`
      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 the device is running a build before platform API version 21, audio attributes cannot be set directly on the underlying audio track. In this case, the usage will be mapped onto an equivalent stream type using `Util.getStreamTypeForAudioUsage(int)`.

      If audio focus should be handled, the `AudioAttributes.usage` must be `C.USAGE_MEDIA` or `C.USAGE_GAME`. Other usages will throw an `IllegalArgumentException`.

      Specified by:
        `setAudioAttributes` in interface `ExoPlayer`
      Parameters:
        `audioAttributes` - The attributes to use for audio playback.
        `handleAudioFocus` - True if the player should handle audio focus, false otherwise.

    - #### setAudioSessionId

          public void setAudioSessionId​(int audioSessionId)

      Description copied from interface: `ExoPlayer`
      Sets the ID of the audio session to attach to the underlying `AudioTrack`.

      The audio session ID can be generated using `Util.generateAudioSessionIdV21(Context)` for API 21+.

      Specified by:
        `setAudioSessionId` in interface `ExoPlayer`
      Parameters:
        `audioSessionId` - The audio session ID, or `C.AUDIO_SESSION_ID_UNSET` if it should be generated by the framework.

    - #### getAudioSessionId

          public int getAudioSessionId()

      Description copied from interface: `ExoPlayer`
      Returns the audio session identifier, or `C.AUDIO_SESSION_ID_UNSET` if not set.
      Specified by:
        `getAudioSessionId` in interface `ExoPlayer`

    - #### setAuxEffectInfo

          public void setAuxEffectInfo​(AuxEffectInfo auxEffectInfo)

      Description copied from interface: `ExoPlayer`
      Sets information on an auxiliary audio effect to attach to the underlying audio track.
      Specified by:
        `setAuxEffectInfo` in interface `ExoPlayer`

    - #### clearAuxEffectInfo

          public void clearAuxEffectInfo()

      Description copied from interface: `ExoPlayer`
      Detaches any previously attached auxiliary audio effect from the underlying audio track.
      Specified by:
        `clearAuxEffectInfo` in interface `ExoPlayer`

    - #### setPreferredAudioDevice

          public void setPreferredAudioDevice​(@Nullable
                                              AudioDeviceInfo audioDeviceInfo)

      Description copied from interface: `ExoPlayer`
      Sets the preferred audio device.
      Specified by:
        `setPreferredAudioDevice` in interface `ExoPlayer`
      Parameters:
        `audioDeviceInfo` - The preferred audio device, or null to restore the default.

    - #### setSkipSilenceEnabled

          public void setSkipSilenceEnabled​(boolean skipSilenceEnabled)

      Description copied from interface: `ExoPlayer`
      Sets whether skipping silences in the audio stream is enabled.
      Specified by:
        `setSkipSilenceEnabled` in interface `ExoPlayer`
      Parameters:
        `skipSilenceEnabled` - Whether skipping silences in the audio stream is enabled.

    - #### getSkipSilenceEnabled

          public boolean getSkipSilenceEnabled()

      Description copied from interface: `ExoPlayer`
      Returns whether skipping silences in the audio stream is enabled.
      Specified by:
        `getSkipSilenceEnabled` in interface `ExoPlayer`

    - #### setVideoScalingMode

          public void setVideoScalingMode​(int videoScalingMode)

      Description copied from interface: `ExoPlayer`
      Sets the `C.VideoScalingMode`.

      The scaling mode only applies if a `MediaCodec`-based video `Renderer` is enabled and if the output surface is owned by a `SurfaceView`.

      Specified by:
        `setVideoScalingMode` in interface `ExoPlayer`
      Parameters:
        `videoScalingMode` - The `C.VideoScalingMode`.

    - #### getVideoScalingMode

          public int getVideoScalingMode()

      Description copied from interface: `ExoPlayer`
      Returns the `C.VideoScalingMode`.
      Specified by:
        `getVideoScalingMode` in interface `ExoPlayer`

    - #### setVideoChangeFrameRateStrategy

          public void setVideoChangeFrameRateStrategy​(int videoChangeFrameRateStrategy)

      Description copied from interface: `ExoPlayer`
      Sets a `C.VideoChangeFrameRateStrategy` that will be used by the player when provided with a video output `Surface`.

      The strategy only applies if a `MediaCodec`-based video `Renderer` is enabled. Applications wishing to use `Surface.CHANGE_FRAME_RATE_ALWAYS` should set the mode to `C.VIDEO_CHANGE_FRAME_RATE_STRATEGY_OFF` to disable calls to `Surface.setFrameRate(float, int, int)` from ExoPlayer, and should then call `Surface.setFrameRate(float, int, int)` directly from application code.

      Specified by:
        `setVideoChangeFrameRateStrategy` in interface `ExoPlayer`
      Parameters:
        `videoChangeFrameRateStrategy` - A `C.VideoChangeFrameRateStrategy`.

    - #### getVideoChangeFrameRateStrategy

          public int getVideoChangeFrameRateStrategy()

      Description copied from interface: `ExoPlayer`
      Returns the `C.VideoChangeFrameRateStrategy`.
      Specified by:
        `getVideoChangeFrameRateStrategy` in interface `ExoPlayer`

    - #### setVideoFrameMetadataListener

          public void setVideoFrameMetadataListener​(VideoFrameMetadataListener listener)

      Description copied from interface: `ExoPlayer`
      Sets a listener to receive video frame metadata events.

      This method is intended to be called by the same component that sets the `Surface` onto which video will be rendered. If using ExoPlayer's standard UI components, this method should not be called directly from application code.

      Specified by:
        `setVideoFrameMetadataListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener.

    - #### clearVideoFrameMetadataListener

          public void clearVideoFrameMetadataListener​(VideoFrameMetadataListener listener)

      Description copied from interface: `ExoPlayer`
      Clears the listener which receives video frame metadata events if it matches the one passed. Else does nothing.
      Specified by:
        `clearVideoFrameMetadataListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to clear.

    - #### setCameraMotionListener

          public void setCameraMotionListener​(CameraMotionListener listener)

      Description copied from interface: `ExoPlayer`
      Sets a listener of camera motion events.
      Specified by:
        `setCameraMotionListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener.

    - #### clearCameraMotionListener

          public void clearCameraMotionListener​(CameraMotionListener listener)

      Description copied from interface: `ExoPlayer`
      Clears the listener which receives camera motion events if it matches the one passed. Else does nothing.
      Specified by:
        `clearCameraMotionListener` in interface `ExoPlayer`
      Parameters:
        `listener` - The listener to clear.

    - #### setSeekParameters

          public void setSeekParameters​(@Nullable
                                        SeekParameters seekParameters)

      Description copied from interface: `ExoPlayer`
      Sets the parameters that control how seek operations are performed.
      Specified by:
        `setSeekParameters` in interface `ExoPlayer`
      Parameters:
        `seekParameters` - The seek parameters, or `null` to use the defaults.

    - #### getSeekParameters

          public SeekParameters getSeekParameters()

      Description copied from interface: `ExoPlayer`
      Returns the currently active `SeekParameters` of the player.
      Specified by:
        `getSeekParameters` in interface `ExoPlayer`

    - #### createMessage

          public PlayerMessage createMessage​(PlayerMessage.Target target)

      Description copied from interface: `ExoPlayer`
      Creates a message that can be sent to a `PlayerMessage.Target`. By default, the message will be delivered immediately without blocking on the playback thread. The default `PlayerMessage.getType()` is 0 and the default `PlayerMessage.getPayload()` is null. If a position is specified with `PlayerMessage.setPosition(long)`, the message will be delivered at this position in the current media item defined by `Player.getCurrentMediaItemIndex()`. Alternatively, the message can be sent at a specific mediaItem using `PlayerMessage.setPosition(int, long)`.
      Specified by:
        `createMessage` in interface `ExoPlayer`

    - #### getRendererCount

          public int getRendererCount()

      Description copied from interface: `ExoPlayer`
      Returns the number of renderers.
      Specified by:
        `getRendererCount` in interface `ExoPlayer`

    - #### getRendererType

          public int getRendererType​(int index)

      Description copied from interface: `ExoPlayer`
      Returns the track type that the renderer at a given index handles.

      For example, a video renderer will return `C.TRACK_TYPE_VIDEO`, an audio renderer will return `C.TRACK_TYPE_AUDIO` and a text renderer will return `C.TRACK_TYPE_TEXT`.

      Specified by:
        `getRendererType` in interface `ExoPlayer`
      Parameters:
        `index` - The index of the renderer.
      Returns:
        The `track type` that the renderer handles.

    - #### getRenderer

          public Renderer getRenderer​(int index)

      Description copied from interface: `ExoPlayer`
      Returns the renderer at the given index.
      Specified by:
        `getRenderer` in interface `ExoPlayer`
      Parameters:
        `index` - The index of the renderer.
      Returns:
        The renderer at this index.

    - #### getTrackSelector

          @Nullable
          public TrackSelector getTrackSelector()

      Description copied from interface: `ExoPlayer`
      Returns the track selector that this player uses, or null if track selection is not supported.
      Specified by:
        `getTrackSelector` in interface `ExoPlayer`

    - #### getCurrentTrackGroups

          @Deprecated
          public TrackGroupArray getCurrentTrackGroups()

      Deprecated.
      Use `StubPlayer.getCurrentTracks()`.
      Description copied from interface: `ExoPlayer`
      Returns the available track groups.
      Specified by:
        `getCurrentTrackGroups` in interface `ExoPlayer`
      See Also:
        `Player.Listener.onTracksChanged(Tracks)`

    - #### getCurrentTrackSelections

          @Deprecated
          public TrackSelectionArray getCurrentTrackSelections()

      Deprecated.
      Use `StubPlayer.getCurrentTracks()`.
      Description copied from interface: `ExoPlayer`
      Returns the current track selections for each renderer, which may include `null` elements if some renderers do not have any selected tracks.
      Specified by:
        `getCurrentTrackSelections` in interface `ExoPlayer`
      See Also:
        `Player.Listener.onTracksChanged(Tracks)`

    - #### setForegroundMode

          public void setForegroundMode​(boolean foregroundMode)

      Description copied from interface: `ExoPlayer`
      Sets whether the player is allowed to keep holding limited resources such as video decoders, even when in the idle state. By doing so, the player may be able to reduce latency when starting to play another piece of content for which the same resources are required.

      This mode should be used with caution, since holding limited resources may prevent other players of media components from acquiring them. It should only be enabled when both of the following conditions are true:

      - The application that owns the player is in the foreground.
      - The player is used in a way that may benefit from foreground mode. For this to be true, the same player instance must be used to play multiple pieces of content, and there must be gaps between the playbacks (i.e. `Player.stop()` is called to halt one playback, and `ExoPlayer.prepare(com.google.android.exoplayer2.source.MediaSource)` is called some time later to start a new one).

      Note that foreground mode is not useful for switching between content without gaps between the playbacks. For this use case `Player.stop()` does not need to be called, and simply calling `ExoPlayer.prepare(com.google.android.exoplayer2.source.MediaSource)` for the new media will cause limited resources to be retained even if foreground mode is not enabled.

      If foreground mode is enabled, it's the application's responsibility to disable it when the conditions described above no longer hold.

      Specified by:
        `setForegroundMode` in interface `ExoPlayer`
      Parameters:
        `foregroundMode` - Whether the player is allowed to keep limited resources even when in the idle state.

    - #### setPauseAtEndOfMediaItems

          public void setPauseAtEndOfMediaItems​(boolean pauseAtEndOfMediaItems)

      Description copied from interface: `ExoPlayer`
      Sets whether to pause playback at the end of each media item.

      This means the player will pause at the end of each window in the current `timeline`. Listeners will be informed by a call to `Player.Listener.onPlayWhenReadyChanged(boolean, int)` with the reason `Player.PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM` when this happens.

      Specified by:
        `setPauseAtEndOfMediaItems` in interface `ExoPlayer`
      Parameters:
        `pauseAtEndOfMediaItems` - Whether to pause playback at the end of each media item.

    - #### getPauseAtEndOfMediaItems

          public boolean getPauseAtEndOfMediaItems()

      Description copied from interface: `ExoPlayer`
      Returns whether the player pauses playback at the end of each media item.
      Specified by:
        `getPauseAtEndOfMediaItems` in interface `ExoPlayer`
      See Also:
        `ExoPlayer.setPauseAtEndOfMediaItems(boolean)`

    - #### getAudioFormat

          @Nullable
          public Format getAudioFormat()

      Description copied from interface: `ExoPlayer`
      Returns the audio format currently being played, or null if no audio is being played.
      Specified by:
        `getAudioFormat` in interface `ExoPlayer`

    - #### getVideoFormat

          @Nullable
          public Format getVideoFormat()

      Description copied from interface: `ExoPlayer`
      Returns the video format currently being played, or null if no video is being played.
      Specified by:
        `getVideoFormat` in interface `ExoPlayer`

    - #### getAudioDecoderCounters

          @Nullable
          public DecoderCounters getAudioDecoderCounters()

      Description copied from interface: `ExoPlayer`
      Returns `DecoderCounters` for audio, or null if no audio is being played.
      Specified by:
        `getAudioDecoderCounters` in interface `ExoPlayer`

    - #### getVideoDecoderCounters

          @Nullable
          public DecoderCounters getVideoDecoderCounters()

      Description copied from interface: `ExoPlayer`
      Returns `DecoderCounters` for video, or null if no video is being played.
      Specified by:
        `getVideoDecoderCounters` in interface `ExoPlayer`

    - #### setHandleAudioBecomingNoisy

          public void setHandleAudioBecomingNoisy​(boolean handleAudioBecomingNoisy)

      Description copied from interface: `ExoPlayer`
      Sets whether the player should pause automatically when audio is rerouted from a headset to device speakers. See the audio becoming noisy documentation for more information.
      Specified by:
        `setHandleAudioBecomingNoisy` in interface `ExoPlayer`
      Parameters:
        `handleAudioBecomingNoisy` - Whether the player should pause automatically when audio is rerouted from a headset to device speakers.

    - #### setHandleWakeLock

          @Deprecated
          public void setHandleWakeLock​(boolean handleWakeLock)

      Deprecated.
      Use `setWakeMode(int)` instead.
      Specified by:
        `setHandleWakeLock` in interface `ExoPlayer`

    - #### setWakeMode

          public void setWakeMode​(int wakeMode)

      Description copied from interface: `ExoPlayer`
      Sets how the player should keep the device awake for playback when the screen is off.

      Enabling this feature requires the `Manifest.permission.WAKE_LOCK` permission. It should be used together with a foreground `Service` for use cases where playback occurs and the screen is off (e.g. background audio playback). It is not useful when the screen will be kept on during playback (e.g. foreground video playback).

      When enabled, the locks (`PowerManager.WakeLock` / `WifiManager.WifiLock`) will be held whenever the player is in the `Player.STATE_READY` or `Player.STATE_BUFFERING` states with `playWhenReady = true`. The locks held depends on the specified `C.WakeMode`.

      Specified by:
        `setWakeMode` in interface `ExoPlayer`
      Parameters:
        `wakeMode` - The `C.WakeMode` option to keep the device awake during playback.

    - #### setPriorityTaskManager

          public void setPriorityTaskManager​(@Nullable
                                             PriorityTaskManager priorityTaskManager)

      Description copied from interface: `ExoPlayer`
      Sets a `PriorityTaskManager`, or null to clear a previously set priority task manager.

      The priority `C.PRIORITY_PLAYBACK` will be set while the player is loading.

      Specified by:
        `setPriorityTaskManager` in interface `ExoPlayer`
      Parameters:
        `priorityTaskManager` - The `PriorityTaskManager`, or null to clear a previously set priority task manager.

    - #### experimentalSetOffloadSchedulingEnabled

          public void experimentalSetOffloadSchedulingEnabled​(boolean offloadSchedulingEnabled)

      Description copied from interface: `ExoPlayer`
      Sets whether audio offload scheduling is enabled. If enabled, ExoPlayer's main loop will run as rarely as possible when playing an audio stream using audio offload.

      Only use this scheduling mode if the player is not displaying anything to the user. For example when the application is in the background, or the screen is off. The player state (including position) is rarely updated (roughly between every 10 seconds and 1 minute).

      While offload scheduling is enabled, player events may be delivered severely delayed and apps should not interact with the player. When returning to the foreground, disable offload scheduling and wait for `ExoPlayer.AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged(boolean)` to be called with `offloadSchedulingEnabled = false` before interacting with the player.

      This mode should save significant power when the phone is playing offload audio with the screen off.

      This mode only has an effect when playing an audio track in offload mode, which requires all the following:

      - Audio offload rendering is enabled in `DefaultRenderersFactory.setEnableAudioOffload(boolean)` or the equivalent option passed to `DefaultAudioSink.Builder.setOffloadMode(@com.google.android.exoplayer2.audio.DefaultAudioSink.OffloadMode int)`.
      - An audio track is playing in a format that the device supports offloading (for example, MP3 or AAC).
      - The `AudioSink` is playing with an offload `AudioTrack`.

      The state where ExoPlayer main loop has been paused to save power during offload playback can be queried with `ExoPlayer.experimentalIsSleepingForOffload()`.

      This method is experimental, and will be renamed or removed in a future release.

      Specified by:
        `experimentalSetOffloadSchedulingEnabled` in interface `ExoPlayer`
      Parameters:
        `offloadSchedulingEnabled` - Whether to enable offload scheduling.

    - #### experimentalIsSleepingForOffload

          public boolean experimentalIsSleepingForOffload()

      Description copied from interface: `ExoPlayer`
      Returns whether the player has paused its main loop to save power in offload scheduling mode.
      Specified by:
        `experimentalIsSleepingForOffload` in interface `ExoPlayer`
      See Also:
        `ExoPlayer.experimentalSetOffloadSchedulingEnabled(boolean)`, `ExoPlayer.AudioOffloadListener.onExperimentalSleepingForOffloadChanged(boolean)`

    - #### isTunnelingEnabled

          public boolean isTunnelingEnabled()

      Description copied from interface: `ExoPlayer`
      Returns whether tunneling is enabled for the currently selected tracks.
      Specified by:
        `isTunnelingEnabled` in interface `ExoPlayer`
      See Also:
        `Player.Listener.onTracksChanged(Tracks)`