Package com.castlabs.android.player

## Class AbstractPlayerListener

- java.lang.Object
- - com.castlabs.android.player.AbstractPlayerListener

- All Implemented Interfaces:
    `PlayerListener`
  Direct Known Subclasses:
    `MultiControllerPlaylist`

      public abstract class AbstractPlayerListener
      extends Object
      implements PlayerListener

  Abstract implementation of the `PlayerListener`. All methods of the the `PlayerListener` are implemented with empty bodies and you can extend this class if you only need to implement a subset of the callbacks. Using this abstract class instead of the interface might also simplify updates of the API.

  *NOTE* that all listener methods are invoked on the UI/main thread of your applications. You can directly interact with UI components from within the implementation of you listener.
  Since:
    1.1.0

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractPlayerListener()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `onDisplayChanged​(DisplayInfo displayInfo, boolean canPlay)` | Callback triggered when the underlying screen information changes.
    `void` | `onDurationChanged​(long durationUs)` | Callback triggered when the stream duration has been refreshed.
    `void` | `onError​(CastlabsPlayerException error)` | Error callback that is called when exceptions are raised on background threads.
    `void` | `onFatalErrorOccurred​(CastlabsPlayerException error)` | Error callback that is called when a fatal exception is raised on background threads.
    `void` | `onFullyBuffered()` | Invoked when all the remaining content has been buffered.
    `void` | `onPlaybackPositionChanged​(long playbackPositionMs)` | Event triggered when the playback position changed.
    `void` | `onPlayerModelChanged()` | Callback triggered when the player model has been changed and the `PlayerController` can now be queried for available and selected video tracks and qualities, audio tracks and subtitle tracks and the duration.
    `void` | `onSeekCompleted()` |
    `void` | `onSeekRangeChanged​(long startTimeMs, long endTimeMs)` | Event triggered when the seek range changed
    `void` | `onSeekTo​(long newPosition)` | This callback is invoked when the position of the video playback is actively changed by the `PlayerController`.
    `void` | `onSpeedChanged​(float speed)` | Callback triggered when the playback speed is changed.
    `void` | `onStateChanged​(PlayerController.State state)` | State change event triggered when the player state changed
    `void` | `onVideoKeyStatusChanged​(List<VideoTrackQuality> trackList)` | Callback triggered when video track's DRM-key status is changed
    `void` | `onVideoSizeChanged​(int width, int height, float pixelWidthHeightRatio)` | Invoked each time there's a change in the size of the video being rendered.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractPlayerListener

          public AbstractPlayerListener()

  - ### Method Detail

    - #### onFatalErrorOccurred

          public void onFatalErrorOccurred​(@NonNull
                                           CastlabsPlayerException error)

      Description copied from interface: `PlayerListener`
      Error callback that is called when a fatal exception is raised on background threads. All Exceptions are wrapped in a `CastlabsPlayerException`. This method will be invoked *only* for fatal errors, and *before* the PlayerController is `released`. The `PlayerListener.onError(CastlabsPlayerException)` method will be invoked after this one.
      Specified by:
        `onFatalErrorOccurred` in interface `PlayerListener`
      Parameters:
        `error` - the player exception

    - #### onError

          public void onError​(@NonNull
                              CastlabsPlayerException error)

      Description copied from interface: `PlayerListener`
      Error callback that is called when exceptions are raised on background threads. All Exceptions are wrapped in a `CastlabsPlayerException`. If the error is `fatal`, the PlayerController will be `released` right before this callback.
      Specified by:
        `onError` in interface `PlayerListener`
      Parameters:
        `error` - the player exception

    - #### onStateChanged

          public void onStateChanged​(@NonNull
                                     PlayerController.State state)

      Description copied from interface: `PlayerListener`
      State change event triggered when the player state changed
      Specified by:
        `onStateChanged` in interface `PlayerListener`
      Parameters:
        `state` - the new state

    - #### onSeekTo

          public void onSeekTo​(long newPosition)

      Description copied from interface: `PlayerListener`
      This callback is invoked when the position of the video playback is actively changed by the `PlayerController`.
      Specified by:
        `onSeekTo` in interface `PlayerListener`
      Parameters:
        `newPosition` - the new position in microseconds

    - #### onSeekCompleted

          public void onSeekCompleted()

      Specified by:
        `onSeekCompleted` in interface `PlayerListener`

    - #### onVideoSizeChanged

          public void onVideoSizeChanged​(int width,
                                         int height,
                                         float pixelWidthHeightRatio)

      Description copied from interface: `PlayerListener`
      Invoked each time there's a change in the size of the video being rendered.
      Specified by:
        `onVideoSizeChanged` in interface `PlayerListener`
      Parameters:
        `width` - The video width in pixels.
        `height` - The video height in pixels.
        `pixelWidthHeightRatio` - The width to height ratio of each pixel. For the normal case of square pixels this will be equal to 1.0. Different values are indicative of anamorphic content.

    - #### onSeekRangeChanged

          public void onSeekRangeChanged​(long startTimeMs,
                                         long endTimeMs)

      Description copied from interface: `PlayerListener`
      Event triggered when the seek range changed
      Specified by:
        `onSeekRangeChanged` in interface `PlayerListener`
      Parameters:
        `startTimeMs` - the possible seek start time in milliseconds
        `endTimeMs` - the possible seek end time in milliseconds

    - #### onPlaybackPositionChanged

          public void onPlaybackPositionChanged​(long playbackPositionMs)

      Description copied from interface: `PlayerListener`
      Event triggered when the playback position changed. Note that for performance reasons, this is triggered at most once per second, hence you will only see when seconds changing during playback.
      Specified by:
        `onPlaybackPositionChanged` in interface `PlayerListener`
      Parameters:
        `playbackPositionMs` - the current playback position in milliseconds

    - #### onDisplayChanged

          public void onDisplayChanged​(DisplayInfo displayInfo,
                                       boolean canPlay)

      Description copied from interface: `PlayerListener`
      Callback triggered when the underlying screen information changes. This is triggered for example when a secondary display is connected. The passed `canPlay` parameter indicates weather playback can be resumed based on the current display and the secondary display configuration of the player controller (see `PlayerController.getSecondaryDisplay()`
      Specified by:
        `onDisplayChanged` in interface `PlayerListener`
      Parameters:
        `displayInfo` - the current display information
        `canPlay` - True if playback can be started or resumed with the current display configuration

    - #### onDurationChanged

          public void onDurationChanged​(long durationUs)

      Description copied from interface: `PlayerListener`
      Callback triggered when the stream duration has been refreshed.
      Specified by:
        `onDurationChanged` in interface `PlayerListener`
      Parameters:
        `durationUs` - Duration in microseconds

    - #### onSpeedChanged

          public void onSpeedChanged​(float speed)

      Description copied from interface: `PlayerListener`
      Callback triggered when the playback speed is changed.
      Specified by:
        `onSpeedChanged` in interface `PlayerListener`
      Parameters:
        `speed` - Playback speed

    - #### onPlayerModelChanged

          public void onPlayerModelChanged()

      Description copied from interface: `PlayerListener`
      Callback triggered when the player model has been changed and the `PlayerController` can now be queried for available and selected video tracks and qualities, audio tracks and subtitle tracks and the duration. The player model is changed every time upon the playback initial start-up or the media period change. Note that each time the player model changes, the video, audio, subtitle tracks and video quality are re-selected based on the parameters provided in `PlayerController.open(android.os.Bundle)` or via other `PlayerController` APIs. The callback is not triggered when the video, audio, subtitle tracks and video quality are selected by the application during playback using `PlayerController.setVideoTrack(VideoTrack)`, `PlayerController.setVideoQuality(VideoTrackQuality)`, `PlayerController.setAudioTrack(AudioTrack)` and `PlayerController.setSubtitleTrack(SubtitleTrack)`.
      Specified by:
        `onPlayerModelChanged` in interface `PlayerListener`

    - #### onVideoKeyStatusChanged

          public void onVideoKeyStatusChanged​(List<VideoTrackQuality> trackList)

      Description copied from interface: `PlayerListener`
      Callback triggered when video track's DRM-key status is changed
      Specified by:
        `onVideoKeyStatusChanged` in interface `PlayerListener`
      Parameters:
        `trackList` - The list of tracks with changed key statuses

    - #### onFullyBuffered

          public void onFullyBuffered()

      Description copied from interface: `PlayerListener`
      Invoked when all the remaining content has been buffered. From this point onwards no more network activity is required to finish playing the current media.
      Specified by:
        `onFullyBuffered` in interface `PlayerListener`