Allow users of the stable API to register an EventLogger

Overriding any methods of AnalyticsListener requires using the unstable
API. In future we can incrementally add AnalyticsListener methods to the
stable API.

PiperOrigin-RevId: 445420361
This commit is contained in:
ibaker 2022-04-29 16:01:38 +01:00 committed by Ian Baker
parent 2a726cfe9f
commit 3dff9fbe36
3 changed files with 194 additions and 61 deletions

View File

@ -1175,7 +1175,6 @@ public interface ExoPlayer extends Player {
*
* @param listener The listener to be added.
*/
@UnstableApi
void addAnalyticsListener(AnalyticsListener listener);
/**
@ -1183,7 +1182,6 @@ public interface ExoPlayer extends Player {
*
* @param listener The listener to be removed.
*/
@UnstableApi
void removeAnalyticsListener(AnalyticsListener listener);
/** Returns the number of renderers. */

View File

@ -81,10 +81,10 @@ import java.util.List;
* #onIsPlayingChanged(EventTime, boolean)}) or {@link #onEvents(Player, Events)}, which is called
* after one or more events occurred together.
*/
@UnstableApi
public interface AnalyticsListener {
/** A set of {@link EventFlags}. */
@UnstableApi
final class Events {
private final FlagSet flags;
@ -164,6 +164,7 @@ public interface AnalyticsListener {
*/
// @Target list includes both 'default' targets and TYPE_USE, to ensure backwards compatibility
// with Kotlin usages from before TYPE_USE was added.
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
@Target({FIELD, METHOD, PARAMETER, LOCAL_VARIABLE, TYPE_USE})
@ -233,140 +234,146 @@ public interface AnalyticsListener {
})
@interface EventFlags {}
/** {@link Player#getCurrentTimeline()} changed. */
int EVENT_TIMELINE_CHANGED = Player.EVENT_TIMELINE_CHANGED;
@UnstableApi int EVENT_TIMELINE_CHANGED = Player.EVENT_TIMELINE_CHANGED;
/**
* {@link Player#getCurrentMediaItem()} changed or the player started repeating the current item.
*/
int EVENT_MEDIA_ITEM_TRANSITION = Player.EVENT_MEDIA_ITEM_TRANSITION;
@UnstableApi int EVENT_MEDIA_ITEM_TRANSITION = Player.EVENT_MEDIA_ITEM_TRANSITION;
/** {@link Player#getCurrentTracks()} changed. */
int EVENT_TRACKS_CHANGED = Player.EVENT_TRACKS_CHANGED;
@UnstableApi int EVENT_TRACKS_CHANGED = Player.EVENT_TRACKS_CHANGED;
/** {@link Player#isLoading()} ()} changed. */
int EVENT_IS_LOADING_CHANGED = Player.EVENT_IS_LOADING_CHANGED;
@UnstableApi int EVENT_IS_LOADING_CHANGED = Player.EVENT_IS_LOADING_CHANGED;
/** {@link Player#getPlaybackState()} changed. */
int EVENT_PLAYBACK_STATE_CHANGED = Player.EVENT_PLAYBACK_STATE_CHANGED;
@UnstableApi int EVENT_PLAYBACK_STATE_CHANGED = Player.EVENT_PLAYBACK_STATE_CHANGED;
/** {@link Player#getPlayWhenReady()} changed. */
int EVENT_PLAY_WHEN_READY_CHANGED = Player.EVENT_PLAY_WHEN_READY_CHANGED;
@UnstableApi int EVENT_PLAY_WHEN_READY_CHANGED = Player.EVENT_PLAY_WHEN_READY_CHANGED;
/** {@link Player#getPlaybackSuppressionReason()} changed. */
@UnstableApi
int EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED = Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED;
/** {@link Player#isPlaying()} changed. */
int EVENT_IS_PLAYING_CHANGED = Player.EVENT_IS_PLAYING_CHANGED;
@UnstableApi int EVENT_IS_PLAYING_CHANGED = Player.EVENT_IS_PLAYING_CHANGED;
/** {@link Player#getRepeatMode()} changed. */
int EVENT_REPEAT_MODE_CHANGED = Player.EVENT_REPEAT_MODE_CHANGED;
@UnstableApi int EVENT_REPEAT_MODE_CHANGED = Player.EVENT_REPEAT_MODE_CHANGED;
/** {@link Player#getShuffleModeEnabled()} changed. */
int EVENT_SHUFFLE_MODE_ENABLED_CHANGED = Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED;
@UnstableApi int EVENT_SHUFFLE_MODE_ENABLED_CHANGED = Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED;
/** {@link Player#getPlayerError()} changed. */
int EVENT_PLAYER_ERROR = Player.EVENT_PLAYER_ERROR;
@UnstableApi int EVENT_PLAYER_ERROR = Player.EVENT_PLAYER_ERROR;
/**
* A position discontinuity occurred. See {@link
* Player.Listener#onPositionDiscontinuity(Player.PositionInfo, Player.PositionInfo, int)}.
*/
int EVENT_POSITION_DISCONTINUITY = Player.EVENT_POSITION_DISCONTINUITY;
@UnstableApi int EVENT_POSITION_DISCONTINUITY = Player.EVENT_POSITION_DISCONTINUITY;
/** {@link Player#getPlaybackParameters()} changed. */
int EVENT_PLAYBACK_PARAMETERS_CHANGED = Player.EVENT_PLAYBACK_PARAMETERS_CHANGED;
@UnstableApi int EVENT_PLAYBACK_PARAMETERS_CHANGED = Player.EVENT_PLAYBACK_PARAMETERS_CHANGED;
/** {@link Player#getAvailableCommands()} changed. */
int EVENT_AVAILABLE_COMMANDS_CHANGED = Player.EVENT_AVAILABLE_COMMANDS_CHANGED;
@UnstableApi int EVENT_AVAILABLE_COMMANDS_CHANGED = Player.EVENT_AVAILABLE_COMMANDS_CHANGED;
/** {@link Player#getMediaMetadata()} changed. */
int EVENT_MEDIA_METADATA_CHANGED = Player.EVENT_MEDIA_METADATA_CHANGED;
@UnstableApi int EVENT_MEDIA_METADATA_CHANGED = Player.EVENT_MEDIA_METADATA_CHANGED;
/** {@link Player#getPlaylistMetadata()} changed. */
int EVENT_PLAYLIST_METADATA_CHANGED = Player.EVENT_PLAYLIST_METADATA_CHANGED;
@UnstableApi int EVENT_PLAYLIST_METADATA_CHANGED = Player.EVENT_PLAYLIST_METADATA_CHANGED;
/** {@link Player#getSeekBackIncrement()} changed. */
int EVENT_SEEK_BACK_INCREMENT_CHANGED = Player.EVENT_SEEK_BACK_INCREMENT_CHANGED;
@UnstableApi int EVENT_SEEK_BACK_INCREMENT_CHANGED = Player.EVENT_SEEK_BACK_INCREMENT_CHANGED;
/** {@link Player#getSeekForwardIncrement()} changed. */
@UnstableApi
int EVENT_SEEK_FORWARD_INCREMENT_CHANGED = Player.EVENT_SEEK_FORWARD_INCREMENT_CHANGED;
/** {@link Player#getMaxSeekToPreviousPosition()} changed. */
@UnstableApi
int EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED =
Player.EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED;
/** {@link Player#getTrackSelectionParameters()} changed. */
@UnstableApi
int EVENT_TRACK_SELECTION_PARAMETERS_CHANGED = Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED;
/** Audio attributes changed. */
int EVENT_AUDIO_ATTRIBUTES_CHANGED = Player.EVENT_AUDIO_ATTRIBUTES_CHANGED;
@UnstableApi int EVENT_AUDIO_ATTRIBUTES_CHANGED = Player.EVENT_AUDIO_ATTRIBUTES_CHANGED;
/** An audio session id was set. */
int EVENT_AUDIO_SESSION_ID = Player.EVENT_AUDIO_SESSION_ID;
@UnstableApi int EVENT_AUDIO_SESSION_ID = Player.EVENT_AUDIO_SESSION_ID;
/** The volume changed. */
int EVENT_VOLUME_CHANGED = Player.EVENT_VOLUME_CHANGED;
@UnstableApi int EVENT_VOLUME_CHANGED = Player.EVENT_VOLUME_CHANGED;
/** Skipping silences was enabled or disabled in the audio stream. */
int EVENT_SKIP_SILENCE_ENABLED_CHANGED = Player.EVENT_SKIP_SILENCE_ENABLED_CHANGED;
@UnstableApi int EVENT_SKIP_SILENCE_ENABLED_CHANGED = Player.EVENT_SKIP_SILENCE_ENABLED_CHANGED;
/** The surface size changed. */
int EVENT_SURFACE_SIZE_CHANGED = Player.EVENT_SURFACE_SIZE_CHANGED;
@UnstableApi int EVENT_SURFACE_SIZE_CHANGED = Player.EVENT_SURFACE_SIZE_CHANGED;
/** The video size changed. */
int EVENT_VIDEO_SIZE_CHANGED = Player.EVENT_VIDEO_SIZE_CHANGED;
@UnstableApi int EVENT_VIDEO_SIZE_CHANGED = Player.EVENT_VIDEO_SIZE_CHANGED;
/**
* The first frame has been rendered since setting the surface, since the renderer was reset or
* since the stream changed.
*/
int EVENT_RENDERED_FIRST_FRAME = Player.EVENT_RENDERED_FIRST_FRAME;
@UnstableApi int EVENT_RENDERED_FIRST_FRAME = Player.EVENT_RENDERED_FIRST_FRAME;
/** Metadata associated with the current playback time was reported. */
int EVENT_METADATA = Player.EVENT_METADATA;
@UnstableApi int EVENT_METADATA = Player.EVENT_METADATA;
/** {@link Player#getCurrentCues()} changed. */
int EVENT_CUES = Player.EVENT_CUES;
@UnstableApi int EVENT_CUES = Player.EVENT_CUES;
/** {@link Player#getDeviceInfo()} changed. */
int EVENT_DEVICE_INFO_CHANGED = Player.EVENT_DEVICE_INFO_CHANGED;
@UnstableApi int EVENT_DEVICE_INFO_CHANGED = Player.EVENT_DEVICE_INFO_CHANGED;
/** {@link Player#getDeviceVolume()} changed. */
int EVENT_DEVICE_VOLUME_CHANGED = Player.EVENT_DEVICE_VOLUME_CHANGED;
@UnstableApi int EVENT_DEVICE_VOLUME_CHANGED = Player.EVENT_DEVICE_VOLUME_CHANGED;
/** A source started loading data. */
@UnstableApi
int EVENT_LOAD_STARTED = 1000; // Intentional gap to leave space for new Player events
/** A source started completed loading data. */
int EVENT_LOAD_COMPLETED = 1001;
@UnstableApi int EVENT_LOAD_COMPLETED = 1001;
/** A source canceled loading data. */
int EVENT_LOAD_CANCELED = 1002;
@UnstableApi int EVENT_LOAD_CANCELED = 1002;
/** A source had a non-fatal error loading data. */
int EVENT_LOAD_ERROR = 1003;
@UnstableApi int EVENT_LOAD_ERROR = 1003;
/** The downstream format sent to renderers changed. */
int EVENT_DOWNSTREAM_FORMAT_CHANGED = 1004;
@UnstableApi int EVENT_DOWNSTREAM_FORMAT_CHANGED = 1004;
/** Data was removed from the end of the media buffer. */
int EVENT_UPSTREAM_DISCARDED = 1005;
@UnstableApi int EVENT_UPSTREAM_DISCARDED = 1005;
/** The bandwidth estimate has been updated. */
int EVENT_BANDWIDTH_ESTIMATE = 1006;
@UnstableApi int EVENT_BANDWIDTH_ESTIMATE = 1006;
/** An audio renderer was enabled. */
int EVENT_AUDIO_ENABLED = 1007;
@UnstableApi int EVENT_AUDIO_ENABLED = 1007;
/** An audio renderer created a decoder. */
int EVENT_AUDIO_DECODER_INITIALIZED = 1008;
@UnstableApi int EVENT_AUDIO_DECODER_INITIALIZED = 1008;
/** The format consumed by an audio renderer changed. */
int EVENT_AUDIO_INPUT_FORMAT_CHANGED = 1009;
@UnstableApi int EVENT_AUDIO_INPUT_FORMAT_CHANGED = 1009;
/** The audio position has increased for the first time since the last pause or position reset. */
int EVENT_AUDIO_POSITION_ADVANCING = 1010;
@UnstableApi int EVENT_AUDIO_POSITION_ADVANCING = 1010;
/** An audio underrun occurred. */
int EVENT_AUDIO_UNDERRUN = 1011;
@UnstableApi int EVENT_AUDIO_UNDERRUN = 1011;
/** An audio renderer released a decoder. */
int EVENT_AUDIO_DECODER_RELEASED = 1012;
@UnstableApi int EVENT_AUDIO_DECODER_RELEASED = 1012;
/** An audio renderer was disabled. */
int EVENT_AUDIO_DISABLED = 1013;
@UnstableApi int EVENT_AUDIO_DISABLED = 1013;
/** The audio sink encountered a non-fatal error. */
int EVENT_AUDIO_SINK_ERROR = 1014;
@UnstableApi int EVENT_AUDIO_SINK_ERROR = 1014;
/** A video renderer was enabled. */
int EVENT_VIDEO_ENABLED = 1015;
@UnstableApi int EVENT_VIDEO_ENABLED = 1015;
/** A video renderer created a decoder. */
int EVENT_VIDEO_DECODER_INITIALIZED = 1016;
@UnstableApi int EVENT_VIDEO_DECODER_INITIALIZED = 1016;
/** The format consumed by a video renderer changed. */
int EVENT_VIDEO_INPUT_FORMAT_CHANGED = 1017;
@UnstableApi int EVENT_VIDEO_INPUT_FORMAT_CHANGED = 1017;
/** Video frames have been dropped. */
int EVENT_DROPPED_VIDEO_FRAMES = 1018;
@UnstableApi int EVENT_DROPPED_VIDEO_FRAMES = 1018;
/** A video renderer released a decoder. */
int EVENT_VIDEO_DECODER_RELEASED = 1019;
@UnstableApi int EVENT_VIDEO_DECODER_RELEASED = 1019;
/** A video renderer was disabled. */
int EVENT_VIDEO_DISABLED = 1020;
@UnstableApi int EVENT_VIDEO_DISABLED = 1020;
/** Video frame processing offset data has been reported. */
int EVENT_VIDEO_FRAME_PROCESSING_OFFSET = 1021;
@UnstableApi int EVENT_VIDEO_FRAME_PROCESSING_OFFSET = 1021;
/** A DRM session has been acquired. */
int EVENT_DRM_SESSION_ACQUIRED = 1022;
@UnstableApi int EVENT_DRM_SESSION_ACQUIRED = 1022;
/** DRM keys were loaded. */
int EVENT_DRM_KEYS_LOADED = 1023;
@UnstableApi int EVENT_DRM_KEYS_LOADED = 1023;
/** A non-fatal DRM session manager error occurred. */
int EVENT_DRM_SESSION_MANAGER_ERROR = 1024;
@UnstableApi int EVENT_DRM_SESSION_MANAGER_ERROR = 1024;
/** DRM keys were restored. */
int EVENT_DRM_KEYS_RESTORED = 1025;
@UnstableApi int EVENT_DRM_KEYS_RESTORED = 1025;
/** DRM keys were removed. */
int EVENT_DRM_KEYS_REMOVED = 1026;
@UnstableApi int EVENT_DRM_KEYS_REMOVED = 1026;
/** A DRM session has been released. */
int EVENT_DRM_SESSION_RELEASED = 1027;
@UnstableApi int EVENT_DRM_SESSION_RELEASED = 1027;
/** The player was released. */
int EVENT_PLAYER_RELEASED = 1028;
@UnstableApi int EVENT_PLAYER_RELEASED = 1028;
/** The audio codec encountered an error. */
int EVENT_AUDIO_CODEC_ERROR = 1029;
@UnstableApi int EVENT_AUDIO_CODEC_ERROR = 1029;
/** The video codec encountered an error. */
int EVENT_VIDEO_CODEC_ERROR = 1030;
@UnstableApi int EVENT_VIDEO_CODEC_ERROR = 1030;
/** Time information of an event. */
@UnstableApi
final class EventTime {
/**
@ -515,6 +522,7 @@ public interface AnalyticsListener {
* @deprecated Use {@link #onPlaybackStateChanged(EventTime, int)} and {@link
* #onPlayWhenReadyChanged(EventTime, boolean, int)} instead.
*/
@UnstableApi
@Deprecated
default void onPlayerStateChanged(
EventTime eventTime, boolean playWhenReady, @Player.State int playbackState) {}
@ -525,6 +533,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param state The new {@link Player.State playback state}.
*/
@UnstableApi
default void onPlaybackStateChanged(EventTime eventTime, @Player.State int state) {}
/**
@ -534,6 +543,7 @@ public interface AnalyticsListener {
* @param playWhenReady Whether playback will proceed when ready.
* @param reason The {@link Player.PlayWhenReadyChangeReason reason} of the change.
*/
@UnstableApi
default void onPlayWhenReadyChanged(
EventTime eventTime, boolean playWhenReady, @Player.PlayWhenReadyChangeReason int reason) {}
@ -543,6 +553,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param playbackSuppressionReason The new {@link PlaybackSuppressionReason}.
*/
@UnstableApi
default void onPlaybackSuppressionReasonChanged(
EventTime eventTime, @PlaybackSuppressionReason int playbackSuppressionReason) {}
@ -552,6 +563,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param isPlaying Whether the player is playing.
*/
@UnstableApi
default void onIsPlayingChanged(EventTime eventTime, boolean isPlaying) {}
/**
@ -560,6 +572,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param reason The reason for the timeline change.
*/
@UnstableApi
default void onTimelineChanged(EventTime eventTime, @TimelineChangeReason int reason) {}
/**
@ -569,6 +582,7 @@ public interface AnalyticsListener {
* @param mediaItem The media item.
* @param reason The reason for the media item transition.
*/
@UnstableApi
default void onMediaItemTransition(
EventTime eventTime,
@Nullable MediaItem mediaItem,
@ -578,6 +592,7 @@ public interface AnalyticsListener {
* @deprecated Use {@link #onPositionDiscontinuity(EventTime, Player.PositionInfo,
* Player.PositionInfo, int)} instead.
*/
@UnstableApi
@Deprecated
default void onPositionDiscontinuity(EventTime eventTime, @DiscontinuityReason int reason) {}
@ -589,6 +604,7 @@ public interface AnalyticsListener {
* @param newPosition The position after the discontinuity.
* @param reason The reason for the position discontinuity.
*/
@UnstableApi
default void onPositionDiscontinuity(
EventTime eventTime,
Player.PositionInfo oldPosition,
@ -600,6 +616,7 @@ public interface AnalyticsListener {
* Player.PositionInfo, int)} instead, listening to changes with {@link
* Player#DISCONTINUITY_REASON_SEEK}.
*/
@UnstableApi
@Deprecated
default void onSeekStarted(EventTime eventTime) {}
@ -607,6 +624,7 @@ public interface AnalyticsListener {
* @deprecated Seeks are processed without delay. Use {@link #onPositionDiscontinuity(EventTime,
* int)} with reason {@link Player#DISCONTINUITY_REASON_SEEK} instead.
*/
@UnstableApi
@Deprecated
default void onSeekProcessed(EventTime eventTime) {}
@ -616,6 +634,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param playbackParameters The new playback parameters.
*/
@UnstableApi
default void onPlaybackParametersChanged(
EventTime eventTime, PlaybackParameters playbackParameters) {}
@ -625,6 +644,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param seekBackIncrementMs The seek back increment, in milliseconds.
*/
@UnstableApi
default void onSeekBackIncrementChanged(EventTime eventTime, long seekBackIncrementMs) {}
/**
@ -633,6 +653,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param seekForwardIncrementMs The seek forward increment, in milliseconds.
*/
@UnstableApi
default void onSeekForwardIncrementChanged(EventTime eventTime, long seekForwardIncrementMs) {}
/**
@ -642,6 +663,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param maxSeekToPreviousPositionMs The maximum seek to previous position, in milliseconds.
*/
@UnstableApi
default void onMaxSeekToPreviousPositionChanged(
EventTime eventTime, long maxSeekToPreviousPositionMs) {}
@ -651,6 +673,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param repeatMode The new repeat mode.
*/
@UnstableApi
default void onRepeatModeChanged(EventTime eventTime, @Player.RepeatMode int repeatMode) {}
/**
@ -659,6 +682,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param shuffleModeEnabled Whether the shuffle mode is enabled.
*/
@UnstableApi
default void onShuffleModeChanged(EventTime eventTime, boolean shuffleModeEnabled) {}
/**
@ -667,11 +691,13 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param isLoading Whether the player is loading.
*/
@UnstableApi
default void onIsLoadingChanged(EventTime eventTime, boolean isLoading) {}
/**
* @deprecated Use {@link #onIsLoadingChanged(EventTime, boolean)} instead.
*/
@UnstableApi
@Deprecated
default void onLoadingChanged(EventTime eventTime, boolean isLoading) {}
@ -681,6 +707,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param availableCommands The available commands.
*/
@UnstableApi
default void onAvailableCommandsChanged(EventTime eventTime, Player.Commands availableCommands) {}
/**
@ -692,6 +719,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param error The error.
*/
@UnstableApi
default void onPlayerError(EventTime eventTime, PlaybackException error) {}
/**
@ -703,6 +731,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param error The new error, or null if the error is being cleared.
*/
@UnstableApi
default void onPlayerErrorChanged(EventTime eventTime, @Nullable PlaybackException error) {}
/**
@ -711,6 +740,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param tracks The tracks. Never null, but may be of length zero.
*/
@UnstableApi
default void onTracksChanged(EventTime eventTime, Tracks tracks) {}
/**
@ -719,6 +749,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param trackSelectionParameters The new {@link TrackSelectionParameters}.
*/
@UnstableApi
default void onTrackSelectionParametersChanged(
EventTime eventTime, TrackSelectionParameters trackSelectionParameters) {}
@ -732,6 +763,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param mediaMetadata The combined {@link MediaMetadata}.
*/
@UnstableApi
default void onMediaMetadataChanged(EventTime eventTime, MediaMetadata mediaMetadata) {}
/**
@ -740,6 +772,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param playlistMetadata The playlist {@link MediaMetadata}.
*/
@UnstableApi
default void onPlaylistMetadataChanged(EventTime eventTime, MediaMetadata playlistMetadata) {}
/**
@ -749,6 +782,7 @@ public interface AnalyticsListener {
* @param loadEventInfo The {@link LoadEventInfo} defining the load event.
* @param mediaLoadData The {@link MediaLoadData} defining the data being loaded.
*/
@UnstableApi
default void onLoadStarted(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {}
@ -759,6 +793,7 @@ public interface AnalyticsListener {
* @param loadEventInfo The {@link LoadEventInfo} defining the load event.
* @param mediaLoadData The {@link MediaLoadData} defining the data being loaded.
*/
@UnstableApi
default void onLoadCompleted(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {}
@ -769,6 +804,7 @@ public interface AnalyticsListener {
* @param loadEventInfo The {@link LoadEventInfo} defining the load event.
* @param mediaLoadData The {@link MediaLoadData} defining the data being loaded.
*/
@UnstableApi
default void onLoadCanceled(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {}
@ -788,6 +824,7 @@ public interface AnalyticsListener {
* @param error The load error.
* @param wasCanceled Whether the load was canceled as a result of the error.
*/
@UnstableApi
default void onLoadError(
EventTime eventTime,
LoadEventInfo loadEventInfo,
@ -801,6 +838,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param mediaLoadData The {@link MediaLoadData} defining the newly selected media data.
*/
@UnstableApi
default void onDownstreamFormatChanged(EventTime eventTime, MediaLoadData mediaLoadData) {}
/**
@ -810,6 +848,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param mediaLoadData The {@link MediaLoadData} defining the media being discarded.
*/
@UnstableApi
default void onUpstreamDiscarded(EventTime eventTime, MediaLoadData mediaLoadData) {}
/**
@ -820,6 +859,7 @@ public interface AnalyticsListener {
* @param totalBytesLoaded The total bytes loaded this update is based on.
* @param bitrateEstimate The bandwidth estimate, in bits per second.
*/
@UnstableApi
default void onBandwidthEstimate(
EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) {}
@ -829,6 +869,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param metadata The metadata.
*/
@UnstableApi
default void onMetadata(EventTime eventTime, Metadata metadata) {}
/**
@ -840,12 +881,14 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param cues The {@link Cue Cues}. May be empty.
*/
@UnstableApi
default void onCues(EventTime eventTime, List<Cue> cues) {}
/**
* @deprecated Use {@link #onAudioEnabled} and {@link #onVideoEnabled} instead.
*/
@Deprecated
@UnstableApi
default void onDecoderEnabled(
EventTime eventTime, int trackType, DecoderCounters decoderCounters) {}
@ -853,6 +896,7 @@ public interface AnalyticsListener {
* @deprecated Use {@link #onAudioDecoderInitialized} and {@link #onVideoDecoderInitialized}
* instead.
*/
@UnstableApi
@Deprecated
default void onDecoderInitialized(
EventTime eventTime, int trackType, String decoderName, long initializationDurationMs) {}
@ -861,12 +905,14 @@ public interface AnalyticsListener {
* @deprecated Use {@link #onAudioInputFormatChanged(EventTime, Format, DecoderReuseEvaluation)}
* and {@link #onVideoInputFormatChanged(EventTime, Format, DecoderReuseEvaluation)}. instead.
*/
@UnstableApi
@Deprecated
default void onDecoderInputFormatChanged(EventTime eventTime, int trackType, Format format) {}
/**
* @deprecated Use {@link #onAudioDisabled} and {@link #onVideoDisabled} instead.
*/
@UnstableApi
@Deprecated
default void onDecoderDisabled(
EventTime eventTime, int trackType, DecoderCounters decoderCounters) {}
@ -878,6 +924,7 @@ public interface AnalyticsListener {
* @param decoderCounters {@link DecoderCounters} that will be updated by the renderer for as long
* as it remains enabled.
*/
@UnstableApi
default void onAudioEnabled(EventTime eventTime, DecoderCounters decoderCounters) {}
/**
@ -889,6 +936,7 @@ public interface AnalyticsListener {
* finished.
* @param initializationDurationMs The time taken to initialize the decoder in milliseconds.
*/
@UnstableApi
default void onAudioDecoderInitialized(
EventTime eventTime,
String decoderName,
@ -898,6 +946,7 @@ public interface AnalyticsListener {
/**
* @deprecated Use {@link #onAudioDecoderInitialized(EventTime, String, long, long)}.
*/
@UnstableApi
@Deprecated
default void onAudioDecoderInitialized(
EventTime eventTime, String decoderName, long initializationDurationMs) {}
@ -905,6 +954,7 @@ public interface AnalyticsListener {
/**
* @deprecated Use {@link #onAudioInputFormatChanged(EventTime, Format, DecoderReuseEvaluation)}.
*/
@UnstableApi
@Deprecated
default void onAudioInputFormatChanged(EventTime eventTime, Format format) {}
@ -917,6 +967,7 @@ public interface AnalyticsListener {
* decoder instance can be reused for the new format, or {@code null} if the renderer did not
* have a decoder.
*/
@UnstableApi
default void onAudioInputFormatChanged(
EventTime eventTime,
Format format,
@ -930,6 +981,7 @@ public interface AnalyticsListener {
* @param playoutStartSystemTimeMs The approximate derived {@link System#currentTimeMillis()} at
* which playout started.
*/
@UnstableApi
default void onAudioPositionAdvancing(EventTime eventTime, long playoutStartSystemTimeMs) {}
/**
@ -941,6 +993,7 @@ public interface AnalyticsListener {
* encoded audio. {@link C#TIME_UNSET} if the output buffer contains non-PCM encoded audio.
* @param elapsedSinceLastFeedMs The time since audio was last written to the output buffer.
*/
@UnstableApi
default void onAudioUnderrun(
EventTime eventTime, int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {}
@ -950,6 +1003,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param decoderName The decoder that was released.
*/
@UnstableApi
default void onAudioDecoderReleased(EventTime eventTime, String decoderName) {}
/**
@ -958,6 +1012,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param decoderCounters {@link DecoderCounters} that were updated by the renderer.
*/
@UnstableApi
default void onAudioDisabled(EventTime eventTime, DecoderCounters decoderCounters) {}
/**
@ -966,6 +1021,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param audioSessionId The audio session ID.
*/
@UnstableApi
default void onAudioSessionIdChanged(EventTime eventTime, int audioSessionId) {}
/**
@ -974,6 +1030,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param audioAttributes The audio attributes.
*/
@UnstableApi
default void onAudioAttributesChanged(EventTime eventTime, AudioAttributes audioAttributes) {}
/**
@ -982,6 +1039,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param skipSilenceEnabled Whether skipping silences in the audio stream is enabled.
*/
@UnstableApi
default void onSkipSilenceEnabledChanged(EventTime eventTime, boolean skipSilenceEnabled) {}
/**
@ -999,6 +1057,7 @@ public interface AnalyticsListener {
* AudioSink.InitializationException}, a {@link AudioSink.WriteException}, or an {@link
* AudioSink.UnexpectedDiscontinuityException}.
*/
@UnstableApi
default void onAudioSinkError(EventTime eventTime, Exception audioSinkError) {}
/**
@ -1015,6 +1074,7 @@ public interface AnalyticsListener {
* @param audioCodecError The error. Typically a {@link CodecException} if the renderer uses
* {@link MediaCodec}, or a {@link DecoderException} if the renderer uses a software decoder.
*/
@UnstableApi
default void onAudioCodecError(EventTime eventTime, Exception audioCodecError) {}
/**
@ -1023,6 +1083,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param volume The new volume, with 0 being silence and 1 being unity gain.
*/
@UnstableApi
default void onVolumeChanged(EventTime eventTime, float volume) {}
/**
@ -1031,6 +1092,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param deviceInfo The new {@link DeviceInfo}.
*/
@UnstableApi
default void onDeviceInfoChanged(EventTime eventTime, DeviceInfo deviceInfo) {}
/**
@ -1040,6 +1102,7 @@ public interface AnalyticsListener {
* @param volume The new device volume, with 0 being silence and 1 being unity gain.
* @param muted Whether the device is muted.
*/
@UnstableApi
default void onDeviceVolumeChanged(EventTime eventTime, int volume, boolean muted) {}
/**
@ -1049,6 +1112,7 @@ public interface AnalyticsListener {
* @param decoderCounters {@link DecoderCounters} that will be updated by the renderer for as long
* as it remains enabled.
*/
@UnstableApi
default void onVideoEnabled(EventTime eventTime, DecoderCounters decoderCounters) {}
/**
@ -1060,6 +1124,7 @@ public interface AnalyticsListener {
* finished.
* @param initializationDurationMs The time taken to initialize the decoder in milliseconds.
*/
@UnstableApi
default void onVideoDecoderInitialized(
EventTime eventTime,
String decoderName,
@ -1069,6 +1134,7 @@ public interface AnalyticsListener {
/**
* @deprecated Use {@link #onVideoDecoderInitialized(EventTime, String, long, long)}.
*/
@UnstableApi
@Deprecated
default void onVideoDecoderInitialized(
EventTime eventTime, String decoderName, long initializationDurationMs) {}
@ -1076,6 +1142,7 @@ public interface AnalyticsListener {
/**
* @deprecated Use {@link #onVideoInputFormatChanged(EventTime, Format, DecoderReuseEvaluation)}.
*/
@UnstableApi
@Deprecated
default void onVideoInputFormatChanged(EventTime eventTime, Format format) {}
@ -1088,6 +1155,7 @@ public interface AnalyticsListener {
* decoder instance can be reused for the new format, or {@code null} if the renderer did not
* have a decoder.
*/
@UnstableApi
default void onVideoInputFormatChanged(
EventTime eventTime,
Format format,
@ -1102,6 +1170,7 @@ public interface AnalyticsListener {
* is timed from when the renderer was started or from when dropped frames were last reported
* (whichever was more recent), and not from when the first of the reported drops occurred.
*/
@UnstableApi
default void onDroppedVideoFrames(EventTime eventTime, int droppedFrames, long elapsedMs) {}
/**
@ -1110,6 +1179,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param decoderName The decoder that was released.
*/
@UnstableApi
default void onVideoDecoderReleased(EventTime eventTime, String decoderName) {}
/**
@ -1118,6 +1188,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param decoderCounters {@link DecoderCounters} that were updated by the renderer.
*/
@UnstableApi
default void onVideoDisabled(EventTime eventTime, DecoderCounters decoderCounters) {}
/**
@ -1135,6 +1206,7 @@ public interface AnalyticsListener {
* rendered since the last call to this method.
* @param frameCount The number to samples included in {@code totalProcessingOffsetUs}.
*/
@UnstableApi
default void onVideoFrameProcessingOffset(
EventTime eventTime, long totalProcessingOffsetUs, int frameCount) {}
@ -1152,6 +1224,7 @@ public interface AnalyticsListener {
* @param videoCodecError The error. Typically a {@link CodecException} if the renderer uses
* {@link MediaCodec}, or a {@link DecoderException} if the renderer uses a software decoder.
*/
@UnstableApi
default void onVideoCodecError(EventTime eventTime, Exception videoCodecError) {}
/**
@ -1163,6 +1236,7 @@ public interface AnalyticsListener {
* however may also be other output types (e.g., a {@link VideoDecoderOutputBufferRenderer}).
* @param renderTimeMs {@link SystemClock#elapsedRealtime()} when the first frame was rendered.
*/
@UnstableApi
default void onRenderedFirstFrame(EventTime eventTime, Object output, long renderTimeMs) {}
/**
@ -1172,11 +1246,13 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param videoSize The new size of the video.
*/
@UnstableApi
default void onVideoSizeChanged(EventTime eventTime, VideoSize videoSize) {}
/**
* @deprecated Implement {@link #onVideoSizeChanged(EventTime eventTime, VideoSize)} instead.
*/
@UnstableApi
@Deprecated
default void onVideoSizeChanged(
EventTime eventTime,
@ -1194,11 +1270,13 @@ public interface AnalyticsListener {
* @param height The surface height in pixels. May be {@link C#LENGTH_UNSET} if unknown, or 0 if
* the video is not rendered onto a surface.
*/
@UnstableApi
default void onSurfaceSizeChanged(EventTime eventTime, int width, int height) {}
/**
* @deprecated Implement {@link #onDrmSessionAcquired(EventTime, int)} instead.
*/
@UnstableApi
@Deprecated
default void onDrmSessionAcquired(EventTime eventTime) {}
@ -1208,6 +1286,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param state The {@link DrmSession.State} of the session when the acquisition completed.
*/
@UnstableApi
default void onDrmSessionAcquired(EventTime eventTime, @DrmSession.State int state) {}
/**
@ -1215,6 +1294,7 @@ public interface AnalyticsListener {
*
* @param eventTime The event time.
*/
@UnstableApi
default void onDrmKeysLoaded(EventTime eventTime) {}
/**
@ -1230,6 +1310,7 @@ public interface AnalyticsListener {
* @param eventTime The event time.
* @param error The error.
*/
@UnstableApi
default void onDrmSessionManagerError(EventTime eventTime, Exception error) {}
/**
@ -1237,6 +1318,7 @@ public interface AnalyticsListener {
*
* @param eventTime The event time.
*/
@UnstableApi
default void onDrmKeysRestored(EventTime eventTime) {}
/**
@ -1244,6 +1326,7 @@ public interface AnalyticsListener {
*
* @param eventTime The event time.
*/
@UnstableApi
default void onDrmKeysRemoved(EventTime eventTime) {}
/**
@ -1251,6 +1334,7 @@ public interface AnalyticsListener {
*
* @param eventTime The event time.
*/
@UnstableApi
default void onDrmSessionReleased(EventTime eventTime) {}
/**
@ -1258,6 +1342,7 @@ public interface AnalyticsListener {
*
* @param eventTime The event time.
*/
@UnstableApi
default void onPlayerReleased(EventTime eventTime) {}
/**
@ -1287,5 +1372,6 @@ public interface AnalyticsListener {
* @param player The {@link Player}.
* @param events The {@link Events} that occurred in this iteration.
*/
@UnstableApi
default void onEvents(Player player, Events events) {}
}

View File

@ -49,7 +49,6 @@ import java.util.Locale;
/** Logs events from {@link Player} and other core components using {@link Log}. */
@SuppressWarnings("UngroupedOverloads")
@UnstableApi
public class EventLogger implements AnalyticsListener {
private static final String DEFAULT_TAG = "EventLogger";
@ -91,6 +90,7 @@ public class EventLogger implements AnalyticsListener {
* @param trackSelector This parameter is ignored.
* @deprecated Use {@link EventLogger()}
*/
@UnstableApi
@Deprecated
public EventLogger(@Nullable MappingTrackSelector trackSelector) {
this(DEFAULT_TAG);
@ -103,6 +103,7 @@ public class EventLogger implements AnalyticsListener {
* @param tag The tag used for logging.
* @deprecated Use {@link EventLogger(String)}
*/
@UnstableApi
@Deprecated
public EventLogger(@Nullable MappingTrackSelector trackSelector, String tag) {
this(tag);
@ -110,16 +111,19 @@ public class EventLogger implements AnalyticsListener {
// AnalyticsListener
@UnstableApi
@Override
public void onIsLoadingChanged(EventTime eventTime, boolean isLoading) {
logd(eventTime, "loading", Boolean.toString(isLoading));
}
@UnstableApi
@Override
public void onPlaybackStateChanged(EventTime eventTime, @Player.State int state) {
logd(eventTime, "state", getStateString(state));
}
@UnstableApi
@Override
public void onPlayWhenReadyChanged(
EventTime eventTime, boolean playWhenReady, @Player.PlayWhenReadyChangeReason int reason) {
@ -129,6 +133,7 @@ public class EventLogger implements AnalyticsListener {
playWhenReady + ", " + getPlayWhenReadyChangeReasonString(reason));
}
@UnstableApi
@Override
public void onPlaybackSuppressionReasonChanged(
EventTime eventTime, @PlaybackSuppressionReason int playbackSuppressionReason) {
@ -138,21 +143,25 @@ public class EventLogger implements AnalyticsListener {
getPlaybackSuppressionReasonString(playbackSuppressionReason));
}
@UnstableApi
@Override
public void onIsPlayingChanged(EventTime eventTime, boolean isPlaying) {
logd(eventTime, "isPlaying", Boolean.toString(isPlaying));
}
@UnstableApi
@Override
public void onRepeatModeChanged(EventTime eventTime, @Player.RepeatMode int repeatMode) {
logd(eventTime, "repeatMode", getRepeatModeString(repeatMode));
}
@UnstableApi
@Override
public void onShuffleModeChanged(EventTime eventTime, boolean shuffleModeEnabled) {
logd(eventTime, "shuffleModeEnabled", Boolean.toString(shuffleModeEnabled));
}
@UnstableApi
@Override
public void onPositionDiscontinuity(
EventTime eventTime,
@ -200,12 +209,14 @@ public class EventLogger implements AnalyticsListener {
logd(eventTime, "positionDiscontinuity", builder.toString());
}
@UnstableApi
@Override
public void onPlaybackParametersChanged(
EventTime eventTime, PlaybackParameters playbackParameters) {
logd(eventTime, "playbackParameters", playbackParameters.toString());
}
@UnstableApi
@Override
public void onTimelineChanged(EventTime eventTime, @Player.TimelineChangeReason int reason) {
int periodCount = eventTime.timeline.getPeriodCount();
@ -244,6 +255,7 @@ public class EventLogger implements AnalyticsListener {
logd("]");
}
@UnstableApi
@Override
public void onMediaItemTransition(
EventTime eventTime, @Nullable MediaItem mediaItem, int reason) {
@ -255,11 +267,13 @@ public class EventLogger implements AnalyticsListener {
+ "]");
}
@UnstableApi
@Override
public void onPlayerError(EventTime eventTime, PlaybackException error) {
loge(eventTime, "playerFailed", error);
}
@UnstableApi
@Override
public void onTracksChanged(EventTime eventTime, Tracks tracks) {
logd("tracks [" + getEventTimeString(eventTime));
@ -303,6 +317,7 @@ public class EventLogger implements AnalyticsListener {
logd("]");
}
@UnstableApi
@Override
public void onMetadata(EventTime eventTime, Metadata metadata) {
logd("metadata [" + getEventTimeString(eventTime));
@ -310,23 +325,27 @@ public class EventLogger implements AnalyticsListener {
logd("]");
}
@UnstableApi
@Override
public void onAudioEnabled(EventTime eventTime, DecoderCounters decoderCounters) {
logd(eventTime, "audioEnabled");
}
@UnstableApi
@Override
public void onAudioDecoderInitialized(
EventTime eventTime, String decoderName, long initializationDurationMs) {
logd(eventTime, "audioDecoderInitialized", decoderName);
}
@UnstableApi
@Override
public void onAudioInputFormatChanged(
EventTime eventTime, Format format, @Nullable DecoderReuseEvaluation decoderReuseEvaluation) {
logd(eventTime, "audioInputFormat", Format.toLogString(format));
}
@UnstableApi
@Override
public void onAudioUnderrun(
EventTime eventTime, int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
@ -337,21 +356,25 @@ public class EventLogger implements AnalyticsListener {
/* throwable= */ null);
}
@UnstableApi
@Override
public void onAudioDecoderReleased(EventTime eventTime, String decoderName) {
logd(eventTime, "audioDecoderReleased", decoderName);
}
@UnstableApi
@Override
public void onAudioDisabled(EventTime eventTime, DecoderCounters decoderCounters) {
logd(eventTime, "audioDisabled");
}
@UnstableApi
@Override
public void onAudioSessionIdChanged(EventTime eventTime, int audioSessionId) {
logd(eventTime, "audioSessionId", Integer.toString(audioSessionId));
}
@UnstableApi
@Override
public void onAudioAttributesChanged(EventTime eventTime, AudioAttributes audioAttributes) {
logd(
@ -366,64 +389,76 @@ public class EventLogger implements AnalyticsListener {
+ audioAttributes.allowedCapturePolicy);
}
@UnstableApi
@Override
public void onSkipSilenceEnabledChanged(EventTime eventTime, boolean skipSilenceEnabled) {
logd(eventTime, "skipSilenceEnabled", Boolean.toString(skipSilenceEnabled));
}
@UnstableApi
@Override
public void onVolumeChanged(EventTime eventTime, float volume) {
logd(eventTime, "volume", Float.toString(volume));
}
@UnstableApi
@Override
public void onVideoEnabled(EventTime eventTime, DecoderCounters decoderCounters) {
logd(eventTime, "videoEnabled");
}
@UnstableApi
@Override
public void onVideoDecoderInitialized(
EventTime eventTime, String decoderName, long initializationDurationMs) {
logd(eventTime, "videoDecoderInitialized", decoderName);
}
@UnstableApi
@Override
public void onVideoInputFormatChanged(
EventTime eventTime, Format format, @Nullable DecoderReuseEvaluation decoderReuseEvaluation) {
logd(eventTime, "videoInputFormat", Format.toLogString(format));
}
@UnstableApi
@Override
public void onDroppedVideoFrames(EventTime eventTime, int droppedFrames, long elapsedMs) {
logd(eventTime, "droppedFrames", Integer.toString(droppedFrames));
}
@UnstableApi
@Override
public void onVideoDecoderReleased(EventTime eventTime, String decoderName) {
logd(eventTime, "videoDecoderReleased", decoderName);
}
@UnstableApi
@Override
public void onVideoDisabled(EventTime eventTime, DecoderCounters decoderCounters) {
logd(eventTime, "videoDisabled");
}
@UnstableApi
@Override
public void onRenderedFirstFrame(EventTime eventTime, Object output, long renderTimeMs) {
logd(eventTime, "renderedFirstFrame", String.valueOf(output));
}
@UnstableApi
@Override
public void onVideoSizeChanged(EventTime eventTime, VideoSize videoSize) {
logd(eventTime, "videoSize", videoSize.width + ", " + videoSize.height);
}
@UnstableApi
@Override
public void onLoadStarted(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
// Do nothing.
}
@UnstableApi
@Override
public void onLoadError(
EventTime eventTime,
@ -434,64 +469,76 @@ public class EventLogger implements AnalyticsListener {
printInternalError(eventTime, "loadError", error);
}
@UnstableApi
@Override
public void onLoadCanceled(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
// Do nothing.
}
@UnstableApi
@Override
public void onLoadCompleted(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
// Do nothing.
}
@UnstableApi
@Override
public void onBandwidthEstimate(
EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) {
// Do nothing.
}
@UnstableApi
@Override
public void onSurfaceSizeChanged(EventTime eventTime, int width, int height) {
logd(eventTime, "surfaceSize", width + ", " + height);
}
@UnstableApi
@Override
public void onUpstreamDiscarded(EventTime eventTime, MediaLoadData mediaLoadData) {
logd(eventTime, "upstreamDiscarded", Format.toLogString(mediaLoadData.trackFormat));
}
@UnstableApi
@Override
public void onDownstreamFormatChanged(EventTime eventTime, MediaLoadData mediaLoadData) {
logd(eventTime, "downstreamFormat", Format.toLogString(mediaLoadData.trackFormat));
}
@UnstableApi
@Override
public void onDrmSessionAcquired(EventTime eventTime, @DrmSession.State int state) {
logd(eventTime, "drmSessionAcquired", "state=" + state);
}
@UnstableApi
@Override
public void onDrmSessionManagerError(EventTime eventTime, Exception error) {
printInternalError(eventTime, "drmSessionManagerError", error);
}
@UnstableApi
@Override
public void onDrmKeysRestored(EventTime eventTime) {
logd(eventTime, "drmKeysRestored");
}
@UnstableApi
@Override
public void onDrmKeysRemoved(EventTime eventTime) {
logd(eventTime, "drmKeysRemoved");
}
@UnstableApi
@Override
public void onDrmKeysLoaded(EventTime eventTime) {
logd(eventTime, "drmKeysLoaded");
}
@UnstableApi
@Override
public void onDrmSessionReleased(EventTime eventTime) {
logd(eventTime, "drmSessionReleased");
@ -502,6 +549,7 @@ public class EventLogger implements AnalyticsListener {
*
* @param msg The message to log.
*/
@UnstableApi
protected void logd(String msg) {
Log.d(tag, msg);
}
@ -511,6 +559,7 @@ public class EventLogger implements AnalyticsListener {
*
* @param msg The message to log.
*/
@UnstableApi
protected void loge(String msg) {
Log.e(tag, msg);
}