From 7aaba1ffe5a53468c1ebd24625220318b81a6117 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 28 Jun 2021 12:46:55 +0100 Subject: [PATCH] Migrate usage of Player.EventListener to Player.Listener PiperOrigin-RevId: 381837274 --- .../exoplayer2/castdemo/PlayerManager.java | 12 +++-- .../exoplayer2/demo/PlayerActivity.java | 2 +- .../exoplayer2/ext/ima/AdTagLoader.java | 2 +- .../ext/leanback/LeanbackPlayerAdapter.java | 17 ++---- .../media2/SessionPlayerConnectorTest.java | 2 +- .../exoplayer2/ext/media2/PlayerWrapper.java | 4 -- .../analytics/AnalyticsCollector.java | 38 ++++++-------- .../exoplayer2/ui/PlayerControlView.java | 48 ++++++++--------- .../ui/PlayerNotificationManager.java | 4 +- .../android/exoplayer2/ui/PlayerView.java | 15 +++--- .../ui/StyledPlayerControlView.java | 52 +++++++++---------- .../exoplayer2/ui/StyledPlayerView.java | 15 +++--- 12 files changed, 98 insertions(+), 113 deletions(-) diff --git a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java index 8c367b8734..f1df1c32d5 100644 --- a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java +++ b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java @@ -19,11 +19,11 @@ import android.content.Context; import android.view.KeyEvent; import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Player.DiscontinuityReason; -import com.google.android.exoplayer2.Player.EventListener; import com.google.android.exoplayer2.Player.TimelineChangeReason; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.Timeline; @@ -40,7 +40,7 @@ import com.google.android.gms.cast.framework.CastContext; import java.util.ArrayList; /** Manages players and an internal media queue for the demo app. */ -/* package */ class PlayerManager implements EventListener, SessionAvailabilityListener { +/* package */ class PlayerManager implements Player.Listener, SessionAvailabilityListener { /** Listener for events. */ interface Listener { @@ -221,7 +221,7 @@ import java.util.ArrayList; exoPlayer.release(); } - // Player.EventListener implementation. + // Player.Listener implementation. @Override public void onPlaybackStateChanged(@Player.State int playbackState) { @@ -229,7 +229,10 @@ import java.util.ArrayList; } @Override - public void onPositionDiscontinuity(@DiscontinuityReason int reason) { + public void onPositionDiscontinuity( + Player.PositionInfo oldPosition, + Player.PositionInfo newPosition, + @DiscontinuityReason int reason) { updateCurrentItemIndex(); } @@ -242,6 +245,7 @@ import java.util.ArrayList; public void onTracksChanged( @NonNull TrackGroupArray trackGroups, @NonNull TrackSelectionArray trackSelections) { if (currentPlayer == exoPlayer && trackGroups != lastSeenTrackGroupArray) { + @Nullable MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo(); if (mappedTrackInfo != null) { diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index 7704149fdc..475004f90e 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -412,7 +412,7 @@ public class PlayerActivity extends AppCompatActivity Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); } - private class PlayerEventListener implements Player.EventListener { + private class PlayerEventListener implements Player.Listener { @Override public void onPlaybackStateChanged(@Player.State int playbackState) { diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java index dd71015fbb..f6cebc5adc 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java @@ -447,7 +447,7 @@ import java.util.Map; } } - // Player.EventListener implementation. + // Player.Listener implementation. @Override public void onTimelineChanged(Timeline timeline, @Player.TimelineChangeReason int reason) { diff --git a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java index 55b37bf729..f39226485c 100644 --- a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java +++ b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java @@ -37,6 +37,7 @@ import com.google.android.exoplayer2.Player.TimelineChangeReason; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.Util; +import com.google.android.exoplayer2.video.VideoSize; /** Leanback {@code PlayerAdapter} implementation for {@link Player}. */ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnable { @@ -247,7 +248,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab setVideoSurface(null); } - // Player.EventListener implementation. + // Player.Listener implementation. @Override public void onPlaybackStateChanged(@Player.State int playbackState) { @@ -290,21 +291,13 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab callback.onBufferedPositionChanged(LeanbackPlayerAdapter.this); } - // VideoListener implementation. - @Override - public void onVideoSizeChanged( - int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { + public void onVideoSizeChanged(VideoSize videoSize) { // There's no way to pass pixelWidthHeightRatio to leanback, so we scale the width that we // pass to take it into account. This is necessary to ensure that leanback uses the correct // aspect ratio when playing content with non-square pixels. - int scaledWidth = Math.round(width * pixelWidthHeightRatio); - getCallback().onVideoSizeChanged(LeanbackPlayerAdapter.this, scaledWidth, height); - } - - @Override - public void onRenderedFirstFrame() { - // Do nothing. + int scaledWidth = Math.round(videoSize.width * videoSize.pixelWidthHeightRatio); + getCallback().onVideoSizeChanged(LeanbackPlayerAdapter.this, scaledWidth, videoSize.height); } } } diff --git a/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionPlayerConnectorTest.java b/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionPlayerConnectorTest.java index 3bbbec150f..e8201e80dc 100644 --- a/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionPlayerConnectorTest.java +++ b/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionPlayerConnectorTest.java @@ -1095,7 +1095,7 @@ public class SessionPlayerConnectorTest { .runOnMainSync( () -> simpleExoPlayer.addListener( - new Player.EventListener() { + new Player.Listener() { @Override public void onPlayWhenReadyChanged(boolean playWhenReady, int reason) { if (playWhenReady) { diff --git a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/PlayerWrapper.java b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/PlayerWrapper.java index 060eb982e5..759f411141 100644 --- a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/PlayerWrapper.java +++ b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/PlayerWrapper.java @@ -564,8 +564,6 @@ import java.util.List; private final class ComponentListener implements Player.Listener { - // Player.EventListener implementation. - @Override public void onPlayWhenReadyChanged(boolean playWhenReady, int reason) { updateSessionPlayerState(); @@ -616,8 +614,6 @@ import java.util.List; listener.onPlaylistChanged(); } - // AudioListener implementation. - @Override public void onAudioAttributesChanged(AudioAttributes audioAttributes) { listener.onAudioAttributesChanged(Utils.getAudioAttributesCompat(audioAttributes)); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java index 279d8b1874..3a4f0b6c43 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java @@ -182,21 +182,6 @@ public class AnalyticsCollector } } - // MetadataOutput events. - - /** - * Called when there is metadata associated with current playback time. - * - * @param metadata The metadata. - */ - public final void onMetadata(Metadata metadata) { - EventTime eventTime = generateCurrentPlayerMediaPeriodEventTime(); - sendEvent( - eventTime, - AnalyticsListener.EVENT_METADATA, - listener -> listener.onMetadata(eventTime, metadata)); - } - // AudioRendererEventListener implementation. @SuppressWarnings("deprecation") // Calling deprecated listener method. @@ -574,9 +559,9 @@ public class AnalyticsCollector listener -> listener.onDownstreamFormatChanged(eventTime, mediaLoadData)); } - // Player.EventListener implementation. + // Player.Listener implementation. - // TODO: Use Player.EventListener.onEvents to know when a set of simultaneous callbacks finished. + // TODO: Use Player.Listener.onEvents to know when a set of simultaneous callbacks finished. // This helps to assign exactly the same EventTime to all of them instead of having slightly // different real times. @@ -710,7 +695,7 @@ public class AnalyticsCollector @Override public final void onPlayerError(PlaybackException error) { - EventTime eventTime = null; + @Nullable EventTime eventTime = null; if (error instanceof ExoPlaybackException) { ExoPlaybackException exoError = (ExoPlaybackException) error; if (exoError.mediaPeriodId != null) { @@ -793,6 +778,15 @@ public class AnalyticsCollector listener -> listener.onPlaylistMediaMetadataChanged(eventTime, playlistMediaMetadata)); } + @Override + public final void onMetadata(Metadata metadata) { + EventTime eventTime = generateCurrentPlayerMediaPeriodEventTime(); + sendEvent( + eventTime, + AnalyticsListener.EVENT_METADATA, + listener -> listener.onMetadata(eventTime, metadata)); + } + @SuppressWarnings("deprecation") // Implementing and calling deprecated listener method. @Override public final void onSeekProcessed() { @@ -801,7 +795,7 @@ public class AnalyticsCollector eventTime, /* eventFlag= */ C.INDEX_UNSET, listener -> listener.onSeekProcessed(eventTime)); } - // BandwidthMeter.Listener implementation. + // BandwidthMeter.EventListener implementation. @Override public final void onBandwidthSample(int elapsedMs, long bytes, long bitrate) { @@ -812,7 +806,7 @@ public class AnalyticsCollector listener -> listener.onBandwidthEstimate(eventTime, elapsedMs, bytes, bitrate)); } - // DefaultDrmSessionManager.EventListener implementation. + // DrmSessionEventListener implementation. @Override @SuppressWarnings("deprecation") // Calls deprecated listener method. @@ -874,6 +868,8 @@ public class AnalyticsCollector listener -> listener.onDrmSessionReleased(eventTime)); } + // Internal methods. + /** * Sends an event to registered listeners. * @@ -936,8 +932,6 @@ public class AnalyticsCollector player.getTotalBufferedDuration()); } - // Internal methods. - private EventTime generateEventTime(@Nullable MediaPeriodId mediaPeriodId) { checkNotNull(player); @Nullable diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java index cf0b381805..a3a67e29e8 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java @@ -1278,30 +1278,7 @@ public class PlayerControlView extends FrameLayout { } private final class ComponentListener - implements Player.EventListener, TimeBar.OnScrubListener, OnClickListener { - - @Override - public void onScrubStart(TimeBar timeBar, long position) { - scrubbing = true; - if (positionView != null) { - positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); - } - } - - @Override - public void onScrubMove(TimeBar timeBar, long position) { - if (positionView != null) { - positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); - } - } - - @Override - public void onScrubStop(TimeBar timeBar, long position, boolean canceled) { - scrubbing = false; - if (!canceled && player != null) { - seekToTimeBarPosition(player, position); - } - } + implements Player.Listener, TimeBar.OnScrubListener, OnClickListener { @Override public void onEvents(Player player, Events events) { @@ -1330,6 +1307,29 @@ public class PlayerControlView extends FrameLayout { } } + @Override + public void onScrubStart(TimeBar timeBar, long position) { + scrubbing = true; + if (positionView != null) { + positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); + } + } + + @Override + public void onScrubMove(TimeBar timeBar, long position) { + if (positionView != null) { + positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); + } + } + + @Override + public void onScrubStop(TimeBar timeBar, long position, boolean canceled) { + scrubbing = false; + if (!canceled && player != null) { + seekToTimeBarPosition(player, position); + } + } + @Override public void onClick(View view) { Player player = PlayerControlView.this.player; diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java index 0daa57d60c..9e32e48019 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java @@ -640,7 +640,7 @@ public class PlayerNotificationManager { private final Handler mainHandler; private final NotificationManagerCompat notificationManager; private final IntentFilter intentFilter; - private final Player.EventListener playerListener; + private final Player.Listener playerListener; private final NotificationBroadcastReceiver notificationBroadcastReceiver; private final Map playbackActions; private final Map customActions; @@ -1466,7 +1466,7 @@ public class PlayerNotificationManager { builder.setLargeIcon(largeIcon); } - private class PlayerListener implements Player.EventListener { + private class PlayerListener implements Player.Listener { @Override public void onEvents(Player player, Player.Events events) { diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java index ef7ab5cff1..3a1f4f9e35 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java @@ -66,6 +66,7 @@ import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.RepeatModeUtil; import com.google.android.exoplayer2.util.Util; +import com.google.android.exoplayer2.video.VideoSize; import com.google.common.collect.ImmutableList; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -1471,7 +1472,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider { period = new Period(); } - // TextOutput implementation + // Player.Listener implementation @Override public void onCues(List cues) { @@ -1480,13 +1481,13 @@ public class PlayerView extends FrameLayout implements AdViewProvider { } } - // VideoListener implementation - @Override - public void onVideoSizeChanged( - int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { + public void onVideoSizeChanged(VideoSize videoSize) { + int width = videoSize.width; + int height = videoSize.height; + int unappliedRotationDegrees = videoSize.unappliedRotationDegrees; float videoAspectRatio = - (height == 0 || width == 0) ? 1 : (width * pixelWidthHeightRatio) / height; + (height == 0 || width == 0) ? 1 : (width * videoSize.pixelWidthHeightRatio) / height; if (surfaceView instanceof TextureView) { // Try to apply rotation transformation when our surface is a TextureView. @@ -1546,8 +1547,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider { updateForCurrentTrackSelections(/* isNewPlayer= */ false); } - // Player.EventListener implementation - @Override public void onPlaybackStateChanged(@Player.State int playbackState) { updateBuffering(); diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java index cc6affa43a..9aa1229517 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java @@ -1754,36 +1754,11 @@ public class StyledPlayerControlView extends FrameLayout { } private final class ComponentListener - implements Player.EventListener, + implements Player.Listener, TimeBar.OnScrubListener, OnClickListener, PopupWindow.OnDismissListener { - @Override - public void onScrubStart(TimeBar timeBar, long position) { - scrubbing = true; - if (positionView != null) { - positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); - } - controlViewLayoutManager.removeHideCallbacks(); - } - - @Override - public void onScrubMove(TimeBar timeBar, long position) { - if (positionView != null) { - positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); - } - } - - @Override - public void onScrubStop(TimeBar timeBar, long position, boolean canceled) { - scrubbing = false; - if (!canceled && player != null) { - seekToTimeBarPosition(player, position); - } - controlViewLayoutManager.resetHideCallbacks(); - } - @Override public void onEvents(Player player, Events events) { if (events.containsAny(EVENT_PLAYBACK_STATE_CHANGED, EVENT_PLAY_WHEN_READY_CHANGED)) { @@ -1817,6 +1792,31 @@ public class StyledPlayerControlView extends FrameLayout { } } + @Override + public void onScrubStart(TimeBar timeBar, long position) { + scrubbing = true; + if (positionView != null) { + positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); + } + controlViewLayoutManager.removeHideCallbacks(); + } + + @Override + public void onScrubMove(TimeBar timeBar, long position) { + if (positionView != null) { + positionView.setText(Util.getStringForTime(formatBuilder, formatter, position)); + } + } + + @Override + public void onScrubStop(TimeBar timeBar, long position, boolean canceled) { + scrubbing = false; + if (!canceled && player != null) { + seekToTimeBarPosition(player, position); + } + controlViewLayoutManager.resetHideCallbacks(); + } + @Override public void onDismiss() { if (needToHideBars) { diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java index 5995921c64..311fd0ab03 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java @@ -67,6 +67,7 @@ import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.RepeatModeUtil; import com.google.android.exoplayer2.util.Util; +import com.google.android.exoplayer2.video.VideoSize; import com.google.common.collect.ImmutableList; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -1512,7 +1513,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { period = new Period(); } - // TextOutput implementation + // Player.Listener implementation @Override public void onCues(List cues) { @@ -1521,13 +1522,13 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { } } - // VideoListener implementation - @Override - public void onVideoSizeChanged( - int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { + public void onVideoSizeChanged(VideoSize videoSize) { + int width = videoSize.width; + int height = videoSize.height; + int unappliedRotationDegrees = videoSize.unappliedRotationDegrees; float videoAspectRatio = - (height == 0 || width == 0) ? 1 : (width * pixelWidthHeightRatio) / height; + (height == 0 || width == 0) ? 1 : (width * videoSize.pixelWidthHeightRatio) / height; if (surfaceView instanceof TextureView) { // Try to apply rotation transformation when our surface is a TextureView. @@ -1587,8 +1588,6 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { updateForCurrentTrackSelections(/* isNewPlayer= */ false); } - // Player.EventListener implementation - @Override public void onPlaybackStateChanged(@Player.State int playbackState) { updateBuffering();