Class MediaMetricsListener
- java.lang.Object
-
- com.google.android.exoplayer2.analytics.MediaMetricsListener
-
- All Implemented Interfaces:
AnalyticsListener,PlaybackSessionManager.Listener
@RequiresApi(31) @Deprecated public final class MediaMetricsListener extends Object implements AnalyticsListener, PlaybackSessionManager.Listener
Deprecated.com.google.android.exoplayer2 is deprecated. Please migrate to androidx.media3 (which contains the same ExoPlayer code). See the migration guide for more details, including a script to help with the migration.AnAnalyticsListenerthat interacts with the AndroidMediaMetricsManager.It listens to playback events and forwards them to a
PlaybackSession. TheLogSessionIdof the playback session can be obtained withgetLogSessionId().
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.analytics.AnalyticsListener
AnalyticsListener.EventFlags, AnalyticsListener.Events, AnalyticsListener.EventTime
-
-
Field Summary
-
Fields inherited from interface com.google.android.exoplayer2.analytics.AnalyticsListener
EVENT_AUDIO_ATTRIBUTES_CHANGED, EVENT_AUDIO_CODEC_ERROR, EVENT_AUDIO_DECODER_INITIALIZED, EVENT_AUDIO_DECODER_RELEASED, EVENT_AUDIO_DISABLED, EVENT_AUDIO_ENABLED, EVENT_AUDIO_INPUT_FORMAT_CHANGED, EVENT_AUDIO_POSITION_ADVANCING, EVENT_AUDIO_SESSION_ID, EVENT_AUDIO_SINK_ERROR, EVENT_AUDIO_UNDERRUN, EVENT_AVAILABLE_COMMANDS_CHANGED, EVENT_BANDWIDTH_ESTIMATE, EVENT_CUES, EVENT_DEVICE_INFO_CHANGED, EVENT_DEVICE_VOLUME_CHANGED, EVENT_DOWNSTREAM_FORMAT_CHANGED, EVENT_DRM_KEYS_LOADED, EVENT_DRM_KEYS_REMOVED, EVENT_DRM_KEYS_RESTORED, EVENT_DRM_SESSION_ACQUIRED, EVENT_DRM_SESSION_MANAGER_ERROR, EVENT_DRM_SESSION_RELEASED, EVENT_DROPPED_VIDEO_FRAMES, EVENT_IS_LOADING_CHANGED, EVENT_IS_PLAYING_CHANGED, EVENT_LOAD_CANCELED, EVENT_LOAD_COMPLETED, EVENT_LOAD_ERROR, EVENT_LOAD_STARTED, 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_PLAYER_RELEASED, 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_UPSTREAM_DISCARDED, EVENT_VIDEO_CODEC_ERROR, EVENT_VIDEO_DECODER_INITIALIZED, EVENT_VIDEO_DECODER_RELEASED, EVENT_VIDEO_DISABLED, EVENT_VIDEO_ENABLED, EVENT_VIDEO_FRAME_PROCESSING_OFFSET, EVENT_VIDEO_INPUT_FORMAT_CHANGED, EVENT_VIDEO_SIZE_CHANGED, EVENT_VOLUME_CHANGED
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static MediaMetricsListenercreate(Context context)Deprecated.Creates a media metrics listener.LogSessionIdgetLogSessionId()Deprecated.Returns theLogSessionIdused by this listener.voidonAdPlaybackStarted(AnalyticsListener.EventTime eventTime, String contentSessionId, String adSessionId)Deprecated.Called when a session is interrupted by ad playback.voidonBandwidthEstimate(AnalyticsListener.EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate)Deprecated.Called when the bandwidth estimate for the current data source has been updated.voidonDownstreamFormatChanged(AnalyticsListener.EventTime eventTime, MediaLoadData mediaLoadData)Deprecated.Called when the downstream format sent to the renderers changed.voidonEvents(Player player, AnalyticsListener.Events events)Deprecated.Called after one or more events occurred.voidonLoadError(AnalyticsListener.EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData, IOException error, boolean wasCanceled)Deprecated.Called when a media source loading error occurred.voidonPlayerError(AnalyticsListener.EventTime eventTime, PlaybackException error)Deprecated.Called when a fatal player error occurred.voidonPositionDiscontinuity(AnalyticsListener.EventTime eventTime, Player.PositionInfo oldPosition, Player.PositionInfo newPosition, @com.google.android.exoplayer2.Player.DiscontinuityReason int reason)Deprecated.Called when a position discontinuity occurred.voidonSessionActive(AnalyticsListener.EventTime eventTime, String sessionId)Deprecated.Called when a session becomes active, i.e.voidonSessionCreated(AnalyticsListener.EventTime eventTime, String sessionId)Deprecated.Called when a new session is created as a result ofPlaybackSessionManager.updateSessions(EventTime).voidonSessionFinished(AnalyticsListener.EventTime eventTime, String sessionId, boolean automaticTransitionToNextPlayback)Deprecated.Called when a session is permanently finished.voidonVideoDisabled(AnalyticsListener.EventTime eventTime, DecoderCounters decoderCounters)Deprecated.Called when a video renderer is disabled.voidonVideoSizeChanged(AnalyticsListener.EventTime eventTime, VideoSize videoSize)Deprecated.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.-
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.analytics.AnalyticsListener
onAudioAttributesChanged, onAudioCodecError, onAudioDecoderInitialized, onAudioDecoderInitialized, onAudioDecoderReleased, onAudioDisabled, onAudioEnabled, onAudioInputFormatChanged, onAudioInputFormatChanged, onAudioPositionAdvancing, onAudioSessionIdChanged, onAudioSinkError, onAudioUnderrun, onAvailableCommandsChanged, onCues, onCues, onDeviceInfoChanged, onDeviceVolumeChanged, onDrmKeysLoaded, onDrmKeysRemoved, onDrmKeysRestored, onDrmSessionAcquired, onDrmSessionAcquired, onDrmSessionManagerError, onDrmSessionReleased, onDroppedVideoFrames, onIsLoadingChanged, onIsPlayingChanged, onLoadCanceled, onLoadCompleted, onLoadingChanged, onLoadStarted, onMaxSeekToPreviousPositionChanged, onMediaItemTransition, onMediaMetadataChanged, onMetadata, onPlaybackParametersChanged, onPlaybackStateChanged, onPlaybackSuppressionReasonChanged, onPlayerErrorChanged, onPlayerReleased, onPlayerStateChanged, onPlaylistMetadataChanged, onPlayWhenReadyChanged, onPositionDiscontinuity, onRenderedFirstFrame, onRepeatModeChanged, onSeekBackIncrementChanged, onSeekForwardIncrementChanged, onSeekStarted, onShuffleModeChanged, onSkipSilenceEnabledChanged, onSurfaceSizeChanged, onTimelineChanged, onTracksChanged, onTrackSelectionParametersChanged, onUpstreamDiscarded, onVideoCodecError, onVideoDecoderInitialized, onVideoDecoderInitialized, onVideoDecoderReleased, onVideoEnabled, onVideoFrameProcessingOffset, onVideoInputFormatChanged, onVideoInputFormatChanged, onVideoSizeChanged, onVolumeChanged
-
-
-
-
Method Detail
-
create
@Nullable public static MediaMetricsListener create(Context context)
Deprecated.Creates a media metrics listener.- Parameters:
context- A context.- Returns:
- The
MediaMetricsListener, or null if themedia metrics serviceisn't available.
-
getLogSessionId
public LogSessionId getLogSessionId()
Deprecated.Returns theLogSessionIdused by this listener.
-
onSessionCreated
public void onSessionCreated(AnalyticsListener.EventTime eventTime, String sessionId)
Deprecated.Description copied from interface:PlaybackSessionManager.ListenerCalled when a new session is created as a result ofPlaybackSessionManager.updateSessions(EventTime).- Specified by:
onSessionCreatedin interfacePlaybackSessionManager.Listener- Parameters:
eventTime- TheAnalyticsListener.EventTimeat which the session is created.sessionId- The identifier of the new session.
-
onSessionActive
public void onSessionActive(AnalyticsListener.EventTime eventTime, String sessionId)
Deprecated.Description copied from interface:PlaybackSessionManager.ListenerCalled when a session becomes active, i.e. playing in the foreground.- Specified by:
onSessionActivein interfacePlaybackSessionManager.Listener- Parameters:
eventTime- TheAnalyticsListener.EventTimeat which the session becomes active.sessionId- The identifier of the session.
-
onAdPlaybackStarted
public void onAdPlaybackStarted(AnalyticsListener.EventTime eventTime, String contentSessionId, String adSessionId)
Deprecated.Description copied from interface:PlaybackSessionManager.ListenerCalled when a session is interrupted by ad playback.- Specified by:
onAdPlaybackStartedin interfacePlaybackSessionManager.Listener- Parameters:
eventTime- TheAnalyticsListener.EventTimeat which the ad playback starts.contentSessionId- The session identifier of the content session.adSessionId- The identifier of the ad session.
-
onSessionFinished
public void onSessionFinished(AnalyticsListener.EventTime eventTime, String sessionId, boolean automaticTransitionToNextPlayback)
Deprecated.Description copied from interface:PlaybackSessionManager.ListenerCalled when a session is permanently finished.- Specified by:
onSessionFinishedin interfacePlaybackSessionManager.Listener- Parameters:
eventTime- TheAnalyticsListener.EventTimeat which the session finished.sessionId- The identifier of the finished session.automaticTransitionToNextPlayback- Whether the session finished because of an automatic transition to the next playback item.
-
onPositionDiscontinuity
public void onPositionDiscontinuity(AnalyticsListener.EventTime eventTime, Player.PositionInfo oldPosition, Player.PositionInfo newPosition, @DiscontinuityReason @com.google.android.exoplayer2.Player.DiscontinuityReason int reason)
Deprecated.Description copied from interface:AnalyticsListenerCalled when a position discontinuity occurred.- Specified by:
onPositionDiscontinuityin interfaceAnalyticsListener- Parameters:
eventTime- The event time.oldPosition- The position before the discontinuity.newPosition- The position after the discontinuity.reason- The reason for the position discontinuity.
-
onVideoDisabled
public void onVideoDisabled(AnalyticsListener.EventTime eventTime, DecoderCounters decoderCounters)
Deprecated.Description copied from interface:AnalyticsListenerCalled when a video renderer is disabled.- Specified by:
onVideoDisabledin interfaceAnalyticsListener- Parameters:
eventTime- The event time.decoderCounters-DecoderCountersthat were updated by the renderer.
-
onBandwidthEstimate
public void onBandwidthEstimate(AnalyticsListener.EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate)
Deprecated.Description copied from interface:AnalyticsListenerCalled when the bandwidth estimate for the current data source has been updated.- Specified by:
onBandwidthEstimatein interfaceAnalyticsListener- Parameters:
eventTime- The event time.totalLoadTimeMs- The total time spend loading this update is based on, in milliseconds.totalBytesLoaded- The total bytes loaded this update is based on.bitrateEstimate- The bandwidth estimate, in bits per second.
-
onDownstreamFormatChanged
public void onDownstreamFormatChanged(AnalyticsListener.EventTime eventTime, MediaLoadData mediaLoadData)
Deprecated.Description copied from interface:AnalyticsListenerCalled when the downstream format sent to the renderers changed.- Specified by:
onDownstreamFormatChangedin interfaceAnalyticsListener- Parameters:
eventTime- The event time.mediaLoadData- TheMediaLoadDatadefining the newly selected media data.
-
onVideoSizeChanged
public void onVideoSizeChanged(AnalyticsListener.EventTime eventTime, VideoSize videoSize)
Deprecated.Description copied from interface:AnalyticsListenerCalled 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.- Specified by:
onVideoSizeChangedin interfaceAnalyticsListener- Parameters:
eventTime- The event time.videoSize- The new size of the video.
-
onLoadError
public void onLoadError(AnalyticsListener.EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData, IOException error, boolean wasCanceled)
Deprecated.Description copied from interface:AnalyticsListenerCalled when a media source loading error occurred.This method being called does not indicate that playback has failed, or that it will fail. The player may be able to recover from the error. Hence applications should not implement this method to display a user visible error or initiate an application level retry.
Player.Listener.onPlayerError(com.google.android.exoplayer2.PlaybackException)is the appropriate place to implement such behavior. This method is called to provide the application with an opportunity to log the error if it wishes to do so.- Specified by:
onLoadErrorin interfaceAnalyticsListener- Parameters:
eventTime- The event time.loadEventInfo- TheLoadEventInfodefining the load event.mediaLoadData- TheMediaLoadDatadefining the data being loaded.error- The load error.wasCanceled- Whether the load was canceled as a result of the error.
-
onPlayerError
public void onPlayerError(AnalyticsListener.EventTime eventTime, PlaybackException error)
Deprecated.Description copied from interface:AnalyticsListenerCalled when a fatal player error occurred.Implementations of
Playermay pass an instance of a subclass ofPlaybackExceptionto this method in order to include more information about the error.- Specified by:
onPlayerErrorin interfaceAnalyticsListener- Parameters:
eventTime- The event time.error- The error.
-
onEvents
public void onEvents(Player player, AnalyticsListener.Events events)
Deprecated.Description copied from interface:AnalyticsListenerCalled after one or more events occurred.State changes and events that happen within one
Loopermessage queue iteration are reported together and only after all individual callbacks were triggered.Listeners should prefer this method over individual callbacks in the following cases:
- They intend to trigger the same logic for multiple events (e.g. when updating a UI for
both
AnalyticsListener.onPlaybackStateChanged(EventTime, int)andAnalyticsListener.onPlayWhenReadyChanged(EventTime, boolean, int)). - They need access to the
Playerobject to trigger further events (e.g. to callPlayer.seekTo(long)after aAnalyticsListener.onMediaItemTransition(EventTime, MediaItem, int)). - They intend to use multiple state values together or in combination with
Playergetter methods. For example usingPlayer.getCurrentMediaItemIndex()with thetimelineprovided inAnalyticsListener.onTimelineChanged(EventTime, int)is only safe from within this method. - They are interested in events that logically happened together (e.g
AnalyticsListener.onPlaybackStateChanged(EventTime, int)toPlayer.STATE_BUFFERINGbecause ofAnalyticsListener.onMediaItemTransition(EventTime, MediaItem, int)).
- Specified by:
onEventsin interfaceAnalyticsListener- Parameters:
player- ThePlayer.events- TheAnalyticsListener.Eventsthat occurred in this iteration.
- They intend to trigger the same logic for multiple events (e.g. when updating a UI for
both
-
-