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:
parent
2a726cfe9f
commit
3dff9fbe36
@ -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. */
|
||||
|
@ -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) {}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user