Migrate usage of Player.EventListener to Player.Listener
PiperOrigin-RevId: 381837274
This commit is contained in:
parent
ea99c3fa94
commit
7aaba1ffe5
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -447,7 +447,7 @@ import java.util.Map;
|
||||
}
|
||||
}
|
||||
|
||||
// Player.EventListener implementation.
|
||||
// Player.Listener implementation.
|
||||
|
||||
@Override
|
||||
public void onTimelineChanged(Timeline timeline, @Player.TimelineChangeReason int reason) {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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<String, NotificationCompat.Action> playbackActions;
|
||||
private final Map<String, NotificationCompat.Action> 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) {
|
||||
|
@ -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<Cue> 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();
|
||||
|
@ -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) {
|
||||
|
@ -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<Cue> 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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user