AnalyticsListener


public interface AnalyticsListener

Known direct subclasses
EventLogger

Logs events from Player and other core components using Log.

MediaMetricsListener

An AnalyticsListener that interacts with the Android MediaMetricsManager.

PlaybackStatsListener

AnalyticsListener to gather PlaybackStats from the player.


A listener for analytics events.

All events are recorded with an EventTime specifying the elapsed real time and media time at the time of the event.

All methods have no-op default implementations to allow selective overrides.

Listeners can choose to implement individual events (e.g. onIsPlayingChanged) or onEvents, which is called after one or more events occurred together.

Summary

Nested types

@UnstableApi
@Documented
@Retention(value = RetentionPolicy.SOURCE)
@Target(value = )
@IntDef(value = )
public annotation AnalyticsListener.EventFlags

Events that can be reported via onEvents.

Time information of an event.

A set of EventFlags.

Constants

default static final int

Audio attributes changed.

default static final int

The audio codec encountered an error.

default static final int

An audio renderer created a decoder.

default static final int

An audio renderer released a decoder.

default static final int

An audio renderer was disabled.

default static final int

An audio renderer was enabled.

default static final int

The format consumed by an audio renderer changed.

default static final int

The audio position has increased for the first time since the last pause or position reset.

default static final int

An audio session id was set.

default static final int

The audio sink encountered a non-fatal error.

default static final int

An audio track has been initialized.

default static final int

An audio track has been released.

default static final int

An audio underrun occurred.

default static final int

getAvailableCommands changed.

default static final int

The bandwidth estimate has been updated.

default static final int

getCurrentCues changed.

default static final int

getDeviceInfo changed.

default static final int

getDeviceVolume changed.

default static final int

The downstream format sent to renderers changed.

default static final int

DRM keys were loaded.

default static final int

DRM keys were removed.

default static final int

DRM keys were restored.

default static final int

A DRM session has been acquired.

default static final int

A non-fatal DRM session manager error occurred.

default static final int

A DRM session has been released.

default static final int

Video frames have been dropped.

default static final int

isLoading ()} changed.

default static final int

isPlaying changed.

default static final int

A source canceled loading data.

default static final int

A source started completed loading data.

default static final int

A source had a non-fatal error loading data.

default static final int

A source started loading data.

default static final int

getMaxSeekToPreviousPosition changed.

default static final int

getCurrentMediaItem changed or the player started repeating the current item.

default static final int

getMediaMetadata changed.

default static final int

Metadata associated with the current playback time was reported.

default static final int

getPlaybackParameters changed.

default static final int

getPlaybackState changed.

default static final int

getPlaybackSuppressionReason changed.

default static final int

getPlayerError changed.

default static final int

The player was released.

default static final int

getPlaylistMetadata changed.

default static final int

getPlayWhenReady changed.

default static final int

A position discontinuity occurred.

default static final int

The first frame has been rendered since setting the surface, since the renderer was reset or since the stream changed.

default static final int

A renderer changed its readiness for playback.

default static final int

getRepeatMode changed.

default static final int

getSeekBackIncrement changed.

default static final int

getSeekForwardIncrement changed.

default static final int

getShuffleModeEnabled changed.

default static final int

Skipping silences was enabled or disabled in the audio stream.

default static final int

The surface size changed.

default static final int

getCurrentTimeline changed.

default static final int

getCurrentTracks changed.

default static final int

getTrackSelectionParameters changed.

default static final int

Data was removed from the end of the media buffer.

default static final int

The video codec encountered an error.

default static final int

A video renderer created a decoder.

default static final int

A video renderer released a decoder.

default static final int

A video renderer was disabled.

default static final int

A video renderer was enabled.

default static final int

Video frame processing offset data has been reported.

default static final int

The format consumed by a video renderer changed.

default static final int

The video size changed.

default static final int

The volume changed.

Public methods

default void

Called when the audio attributes change.

default void
@UnstableApi
onAudioCodecError(
    AnalyticsListener.EventTime eventTime,
    Exception audioCodecError
)

Called when an audio decoder encounters an error.

default void
@UnstableApi
onAudioDecoderInitialized(
    AnalyticsListener.EventTime eventTime,
    String decoderName,
    long initializationDurationMs
)

This method is deprecated.

Use onAudioDecoderInitialized.

default void
@UnstableApi
onAudioDecoderInitialized(
    AnalyticsListener.EventTime eventTime,
    String decoderName,
    long initializedTimestampMs,
    long initializationDurationMs
)

Called when an audio renderer creates a decoder.

default void
@UnstableApi
onAudioDecoderReleased(
    AnalyticsListener.EventTime eventTime,
    String decoderName
)

Called when an audio renderer releases a decoder.

default void
@UnstableApi
onAudioDisabled(
    AnalyticsListener.EventTime eventTime,
    DecoderCounters decoderCounters
)

Called when an audio renderer is disabled.

default void
@UnstableApi
onAudioEnabled(
    AnalyticsListener.EventTime eventTime,
    DecoderCounters decoderCounters
)

Called when an audio renderer is enabled.

default void
@UnstableApi
onAudioInputFormatChanged(
    AnalyticsListener.EventTime eventTime,
    Format format,
    @Nullable DecoderReuseEvaluation decoderReuseEvaluation
)

Called when the format of the media being consumed by an audio renderer changes.

default void
@UnstableApi
onAudioPositionAdvancing(
    AnalyticsListener.EventTime eventTime,
    long playoutStartSystemTimeMs
)

Called when the audio position has increased for the first time since the last pause or position reset.

default void
@UnstableApi
onAudioSessionIdChanged(
    AnalyticsListener.EventTime eventTime,
    int audioSessionId
)

Called when the audio session ID changes.

default void
@UnstableApi
onAudioSinkError(
    AnalyticsListener.EventTime eventTime,
    Exception audioSinkError
)

Called when AudioSink has encountered an error.

default void

Called when an AudioTrack has been initialized.

default void

Called when an AudioTrack has been released.

default void
@UnstableApi
onAudioUnderrun(
    AnalyticsListener.EventTime eventTime,
    int bufferSize,
    long bufferSizeMs,
    long elapsedSinceLastFeedMs
)

Called when an audio underrun occurs.

default void

Called when the player's available commands changed.

default void
@UnstableApi
onBandwidthEstimate(
    AnalyticsListener.EventTime eventTime,
    int totalLoadTimeMs,
    long totalBytesLoaded,
    long bitrateEstimate
)

Called when the bandwidth estimate for the current data source has been updated.

default void

Called when there is a change in the CueGroup.

default void

This method is deprecated.

Use onCues instead.

default void

Called when the device information changes

default void
@UnstableApi
onDeviceVolumeChanged(
    AnalyticsListener.EventTime eventTime,
    int volume,
    boolean muted
)

Called when the device volume or mute state changes.

default void

Called when the downstream format sent to the renderers changed.

default void

Called each time drm keys are loaded.

default void

Called each time offline drm keys are removed.

default void

Called each time offline drm keys are restored.

default void

This method is deprecated.

Implement onDrmSessionAcquired instead.

default void

Called each time a drm session is acquired.

default void

Called when a drm error occurs.

default void

Called each time a drm session is released.

default void
@UnstableApi
onDroppedVideoFrames(
    AnalyticsListener.EventTime eventTime,
    int droppedFrames,
    long elapsedMs
)

Called after video frames have been dropped.

default void

Called after one or more events occurred.

default void
@UnstableApi
onIsLoadingChanged(
    AnalyticsListener.EventTime eventTime,
    boolean isLoading
)

Called when the player starts or stops loading data from a source.

default void
@UnstableApi
onIsPlayingChanged(
    AnalyticsListener.EventTime eventTime,
    boolean isPlaying
)

Called when the player starts or stops playing.

default void
@UnstableApi
onLoadCanceled(
    AnalyticsListener.EventTime eventTime,
    LoadEventInfo loadEventInfo,
    MediaLoadData mediaLoadData
)

Called when a media source canceled loading data.

default void
@UnstableApi
onLoadCompleted(
    AnalyticsListener.EventTime eventTime,
    LoadEventInfo loadEventInfo,
    MediaLoadData mediaLoadData
)

Called when a media source completed loading data.

default void
@UnstableApi
onLoadError(
    AnalyticsListener.EventTime eventTime,
    LoadEventInfo loadEventInfo,
    MediaLoadData mediaLoadData,
    IOException error,
    boolean wasCanceled
)

Called when a media source loading error occurred.

default void
@UnstableApi
onLoadStarted(
    AnalyticsListener.EventTime eventTime,
    LoadEventInfo loadEventInfo,
    MediaLoadData mediaLoadData
)

This method is deprecated.

Implement onLoadStarted instead, and check for retryCount == 0 for equivalent behavior.

default void
@UnstableApi
onLoadStarted(
    AnalyticsListener.EventTime eventTime,
    LoadEventInfo loadEventInfo,
    MediaLoadData mediaLoadData,
    int retryCount
)

Called when a media source started loading data.

default void
@UnstableApi
onLoadingChanged(
    AnalyticsListener.EventTime eventTime,
    boolean isLoading
)

This method is deprecated.

Use onIsLoadingChanged instead.

default void
@UnstableApi
onMaxSeekToPreviousPositionChanged(
    AnalyticsListener.EventTime eventTime,
    long maxSeekToPreviousPositionMs
)

Called when the maximum position for which seekToPrevious seeks to the previous window changes.

default void

Called when playback transitions to a different media item.

default void

Called when the combined MediaMetadata changes.

default void

Called when there is Metadata associated with the current playback time.

default void
@UnstableApi
onPlayWhenReadyChanged(
    AnalyticsListener.EventTime eventTime,
    boolean playWhenReady,
    @Player.PlayWhenReadyChangeReason int reason
)

Called when the value changed that indicates whether playback will proceed when ready.

default void

Called when the playback parameters changed.

default void

Called when the playback state changed.

default void

Called when playback suppression reason changed.

default void

Called when a fatal player error occurred.

default void

Called when the PlaybackException returned by getPlayerError changes.

default void

Called when the Player is released.

default void
@UnstableApi
onPlayerStateChanged(
    AnalyticsListener.EventTime eventTime,
    boolean playWhenReady,
    @Player.State int playbackState
)

This method is deprecated.

Use onPlaybackStateChanged and onPlayWhenReadyChanged instead.

default void

Called when the playlist MediaMetadata changes.

default void

This method is deprecated.

Use onPositionDiscontinuity instead.

default void
@UnstableApi
onPositionDiscontinuity(
    AnalyticsListener.EventTime eventTime,
    Player.PositionInfo oldPosition,
    Player.PositionInfo newPosition,
    @Player.DiscontinuityReason int reason
)

Called when a position discontinuity occurred.

default void
@UnstableApi
onRenderedFirstFrame(
    AnalyticsListener.EventTime eventTime,
    Object output,
    long renderTimeMs
)

Called when a frame is rendered for the first time since setting the surface, or since the renderer was reset, or since the stream being rendered was changed.

default void
@UnstableApi
onRendererReadyChanged(
    AnalyticsListener.EventTime eventTime,
    int rendererIndex,
    @C.TrackType int rendererTrackType,
    boolean isRendererReady
)

Called each time a renderer starts or stops allowing playback to be ready.

default void

Called when the repeat mode changed.

default void
@UnstableApi
onSeekBackIncrementChanged(
    AnalyticsListener.EventTime eventTime,
    long seekBackIncrementMs
)

Called when the seek back increment changed.

default void
@UnstableApi
onSeekForwardIncrementChanged(
    AnalyticsListener.EventTime eventTime,
    long seekForwardIncrementMs
)

Called when the seek forward increment changed.

default void

This method is deprecated.

Use onPositionDiscontinuity instead, listening to changes with DISCONTINUITY_REASON_SEEK.

default void
@UnstableApi
onShuffleModeChanged(
    AnalyticsListener.EventTime eventTime,
    boolean shuffleModeEnabled
)

Called when the shuffle mode changed.

default void
@UnstableApi
onSkipSilenceEnabledChanged(
    AnalyticsListener.EventTime eventTime,
    boolean skipSilenceEnabled
)

Called when skipping silences is enabled or disabled in the audio stream.

default void
@UnstableApi
onSurfaceSizeChanged(
    AnalyticsListener.EventTime eventTime,
    int width,
    int height
)

Called when the output surface size changed.

default void

Called when the timeline changed.

default void

Called when track selection parameters change.

default void

Called when the tracks change.

default void

Called when data is removed from the back of a media buffer, typically so that it can be re-buffered in a different format.

default void
@UnstableApi
onVideoCodecError(
    AnalyticsListener.EventTime eventTime,
    Exception videoCodecError
)

Called when a video decoder encounters an error.

default void
@UnstableApi
onVideoDecoderInitialized(
    AnalyticsListener.EventTime eventTime,
    String decoderName,
    long initializationDurationMs
)

This method is deprecated.

Use onVideoDecoderInitialized.

default void
@UnstableApi
onVideoDecoderInitialized(
    AnalyticsListener.EventTime eventTime,
    String decoderName,
    long initializedTimestampMs,
    long initializationDurationMs
)

Called when a video renderer creates a decoder.

default void
@UnstableApi
onVideoDecoderReleased(
    AnalyticsListener.EventTime eventTime,
    String decoderName
)

Called when a video renderer releases a decoder.

default void
@UnstableApi
onVideoDisabled(
    AnalyticsListener.EventTime eventTime,
    DecoderCounters decoderCounters
)

Called when a video renderer is disabled.

default void
@UnstableApi
onVideoEnabled(
    AnalyticsListener.EventTime eventTime,
    DecoderCounters decoderCounters
)

Called when a video renderer is enabled.

default void
@UnstableApi
onVideoFrameProcessingOffset(
    AnalyticsListener.EventTime eventTime,
    long totalProcessingOffsetUs,
    int frameCount
)

Called when there is an update to the video frame processing offset reported by a video renderer.

default void
@UnstableApi
onVideoInputFormatChanged(
    AnalyticsListener.EventTime eventTime,
    Format format,
    @Nullable DecoderReuseEvaluation decoderReuseEvaluation
)

Called when the format of the media being consumed by a video renderer changes.

default void

Called before a frame is rendered for the first time since setting the surface, and each time there's a change in the size or pixel aspect ratio of the video being rendered.

default void
@UnstableApi
onVideoSizeChanged(
    AnalyticsListener.EventTime eventTime,
    int width,
    int height,
    int unappliedRotationDegrees,
    float pixelWidthHeightRatio
)

This method is deprecated.

Implement onVideoSizeChanged instead.

default void

Called when the volume changes.

Constants

EVENT_AUDIO_ATTRIBUTES_CHANGED

@UnstableApi
default static final int EVENT_AUDIO_ATTRIBUTES_CHANGED = 20

Audio attributes changed.

EVENT_AUDIO_CODEC_ERROR

@UnstableApi
default static final int EVENT_AUDIO_CODEC_ERROR = 1029

The audio codec encountered an error.

EVENT_AUDIO_DECODER_INITIALIZED

@UnstableApi
default static final int EVENT_AUDIO_DECODER_INITIALIZED = 1008

An audio renderer created a decoder.

EVENT_AUDIO_DECODER_RELEASED

@UnstableApi
default static final int EVENT_AUDIO_DECODER_RELEASED = 1012

An audio renderer released a decoder.

EVENT_AUDIO_DISABLED

@UnstableApi
default static final int EVENT_AUDIO_DISABLED = 1013

An audio renderer was disabled.

EVENT_AUDIO_ENABLED

@UnstableApi
default static final int EVENT_AUDIO_ENABLED = 1007

An audio renderer was enabled.

EVENT_AUDIO_INPUT_FORMAT_CHANGED

@UnstableApi
default static final int EVENT_AUDIO_INPUT_FORMAT_CHANGED = 1009

The format consumed by an audio renderer changed.

EVENT_AUDIO_POSITION_ADVANCING

@UnstableApi
default static final int EVENT_AUDIO_POSITION_ADVANCING = 1010

The audio position has increased for the first time since the last pause or position reset.

EVENT_AUDIO_SESSION_ID

@UnstableApi
default static final int EVENT_AUDIO_SESSION_ID = 21

An audio session id was set.

EVENT_AUDIO_SINK_ERROR

@UnstableApi
default static final int EVENT_AUDIO_SINK_ERROR = 1014

The audio sink encountered a non-fatal error.

EVENT_AUDIO_TRACK_INITIALIZED

@UnstableApi
default static final int EVENT_AUDIO_TRACK_INITIALIZED = 1031

An audio track has been initialized.

EVENT_AUDIO_TRACK_RELEASED

@UnstableApi
default static final int EVENT_AUDIO_TRACK_RELEASED = 1032

An audio track has been released.

EVENT_AUDIO_UNDERRUN

@UnstableApi
default static final int EVENT_AUDIO_UNDERRUN = 1011

An audio underrun occurred.

EVENT_AVAILABLE_COMMANDS_CHANGED

@UnstableApi
default static final int EVENT_AVAILABLE_COMMANDS_CHANGED = 13

getAvailableCommands changed.

EVENT_BANDWIDTH_ESTIMATE

@UnstableApi
default static final int EVENT_BANDWIDTH_ESTIMATE = 1006

The bandwidth estimate has been updated.

EVENT_CUES

@UnstableApi
default static final int EVENT_CUES = 27

getCurrentCues changed.

EVENT_DEVICE_INFO_CHANGED

@UnstableApi
default static final int EVENT_DEVICE_INFO_CHANGED = 29

getDeviceInfo changed.

EVENT_DEVICE_VOLUME_CHANGED

@UnstableApi
default static final int EVENT_DEVICE_VOLUME_CHANGED = 30

getDeviceVolume changed.

EVENT_DOWNSTREAM_FORMAT_CHANGED

@UnstableApi
default static final int EVENT_DOWNSTREAM_FORMAT_CHANGED = 1004

The downstream format sent to renderers changed.

EVENT_DRM_KEYS_LOADED

@UnstableApi
default static final int EVENT_DRM_KEYS_LOADED = 1023

DRM keys were loaded.

EVENT_DRM_KEYS_REMOVED

@UnstableApi
default static final int EVENT_DRM_KEYS_REMOVED = 1026

DRM keys were removed.

EVENT_DRM_KEYS_RESTORED

@UnstableApi
default static final int EVENT_DRM_KEYS_RESTORED = 1025

DRM keys were restored.

EVENT_DRM_SESSION_ACQUIRED

@UnstableApi
default static final int EVENT_DRM_SESSION_ACQUIRED = 1022

A DRM session has been acquired.

EVENT_DRM_SESSION_MANAGER_ERROR

@UnstableApi
default static final int EVENT_DRM_SESSION_MANAGER_ERROR = 1024

A non-fatal DRM session manager error occurred.

EVENT_DRM_SESSION_RELEASED

@UnstableApi
default static final int EVENT_DRM_SESSION_RELEASED = 1027

A DRM session has been released.

EVENT_DROPPED_VIDEO_FRAMES

@UnstableApi
default static final int EVENT_DROPPED_VIDEO_FRAMES = 1018

Video frames have been dropped.

EVENT_IS_LOADING_CHANGED

@UnstableApi
default static final int EVENT_IS_LOADING_CHANGED = 3

isLoading ()} changed.

EVENT_IS_PLAYING_CHANGED

@UnstableApi
default static final int EVENT_IS_PLAYING_CHANGED = 7

isPlaying changed.

EVENT_LOAD_CANCELED

@UnstableApi
default static final int EVENT_LOAD_CANCELED = 1002

A source canceled loading data.

EVENT_LOAD_COMPLETED

@UnstableApi
default static final int EVENT_LOAD_COMPLETED = 1001

A source started completed loading data.

EVENT_LOAD_ERROR

@UnstableApi
default static final int EVENT_LOAD_ERROR = 1003

A source had a non-fatal error loading data.

EVENT_LOAD_STARTED

@UnstableApi
default static final int EVENT_LOAD_STARTED = 1000

A source started loading data.

EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED

@UnstableApi
default static final int EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED = 18

getMaxSeekToPreviousPosition changed.

EVENT_MEDIA_ITEM_TRANSITION

@UnstableApi
default static final int EVENT_MEDIA_ITEM_TRANSITION = 1

getCurrentMediaItem changed or the player started repeating the current item.

EVENT_MEDIA_METADATA_CHANGED

@UnstableApi
default static final int EVENT_MEDIA_METADATA_CHANGED = 14

getMediaMetadata changed.

EVENT_METADATA

@UnstableApi
default static final int EVENT_METADATA = 28

Metadata associated with the current playback time was reported.

EVENT_PLAYBACK_PARAMETERS_CHANGED

@UnstableApi
default static final int EVENT_PLAYBACK_PARAMETERS_CHANGED = 12

getPlaybackParameters changed.

EVENT_PLAYBACK_STATE_CHANGED

@UnstableApi<