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 Details

    • AbstractPlayerListener

      public AbstractPlayerListener()
  • Method Details

    • 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