diff --git a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DefaultReceiverPlayerManager.java b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DefaultReceiverPlayerManager.java index 4b71b3a001..fcee88ec49 100644 --- a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DefaultReceiverPlayerManager.java +++ b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DefaultReceiverPlayerManager.java @@ -255,7 +255,7 @@ import java.util.ArrayList; // Player.EventListener implementation. @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { updateCurrentItemIndex(); } 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 35307eb5d8..8f46400670 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 @@ -627,7 +627,7 @@ public class PlayerActivity extends AppCompatActivity private class PlayerEventListener implements Player.EventListener { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (playbackState == Player.STATE_ENDED) { showControls(); } diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java index 14bb433d2b..390deac933 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java @@ -94,7 +94,7 @@ public final class CastPlayer extends BasePlayer { private CastTimeline currentTimeline; private TrackGroupArray currentTrackGroups; private TrackSelectionArray currentTrackSelection; - private int playbackState; + @Player.State private int playbackState; private int repeatMode; private int currentWindowIndex; private boolean playWhenReady; @@ -305,6 +305,7 @@ public final class CastPlayer extends BasePlayer { } @Override + @Player.State public int getPlaybackState() { return playbackState; } diff --git a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java index 1cd9483178..12ef68ee3c 100644 --- a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java +++ b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java @@ -101,7 +101,7 @@ public class FlacPlaybackTest { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (playbackState == Player.STATE_ENDED || (playbackState == Player.STATE_IDLE && playbackException != null)) { player.release(); diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsLoader.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsLoader.java index 465ad51ac5..e860d07a14 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsLoader.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsLoader.java @@ -963,7 +963,7 @@ public final class ImaAdsLoader } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (adsManager == null) { return; } diff --git a/extensions/ima/src/test/java/com/google/android/exoplayer2/ext/ima/FakePlayer.java b/extensions/ima/src/test/java/com/google/android/exoplayer2/ext/ima/FakePlayer.java index d20ccbd728..a9d6a37fac 100644 --- a/extensions/ima/src/test/java/com/google/android/exoplayer2/ext/ima/FakePlayer.java +++ b/extensions/ima/src/test/java/com/google/android/exoplayer2/ext/ima/FakePlayer.java @@ -31,7 +31,7 @@ import java.util.ArrayList; private final Timeline timeline; private boolean prepared; - private int state; + @Player.State private int state; private boolean playWhenReady; private long position; private long contentPosition; @@ -96,8 +96,8 @@ import java.util.ArrayList; } } - /** Sets the state of this player with the given {@code STATE} constant. */ - public void setState(int state, boolean playWhenReady) { + /** Sets the {@link Player.State} of this player. */ + public void setState(@Player.State int state, boolean playWhenReady) { boolean notify = this.state != state || this.playWhenReady != playWhenReady; this.state = state; this.playWhenReady = playWhenReady; @@ -131,6 +131,7 @@ import java.util.ArrayList; } @Override + @Player.State public int getPlaybackState() { return state; } 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 3f4c5d6229..5705b73ab2 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 @@ -18,13 +18,13 @@ package com.google.android.exoplayer2.ext.leanback; import android.content.Context; import android.os.Handler; import androidx.annotation.Nullable; +import android.util.Pair; +import android.view.Surface; +import android.view.SurfaceHolder; import androidx.leanback.R; import androidx.leanback.media.PlaybackGlueHost; import androidx.leanback.media.PlayerAdapter; import androidx.leanback.media.SurfaceHolderGlueHost; -import android.util.Pair; -import android.view.Surface; -import android.view.SurfaceHolder; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ControlDispatcher; import com.google.android.exoplayer2.DefaultControlDispatcher; @@ -271,7 +271,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab // Player.EventListener implementation. @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { notifyStateChanged(); } diff --git a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java index 9c80fabc50..b922a2d0b8 100644 --- a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java +++ b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java @@ -994,7 +994,7 @@ public final class MediaSessionConnector { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { invalidateMediaSessionPlaybackState(); } diff --git a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java index dcd5f4957a..7c6835db0b 100644 --- a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java +++ b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java @@ -101,7 +101,7 @@ public class OpusPlaybackTest { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (playbackState == Player.STATE_ENDED || (playbackState == Player.STATE_IDLE && playbackException != null)) { player.release(); diff --git a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java index 5120004889..5ebeca68d0 100644 --- a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java +++ b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java @@ -139,7 +139,7 @@ public class VpxPlaybackTest { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (playbackState == Player.STATE_ENDED || (playbackState == Player.STATE_IDLE && playbackException != null)) { player.release(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index 96b9072c5c..bea7af189a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -193,6 +193,7 @@ import java.util.concurrent.CopyOnWriteArrayList; } @Override + @Player.State public int getPlaybackState() { return playbackInfo.playbackState; } @@ -658,7 +659,7 @@ import java.util.concurrent.CopyOnWriteArrayList; } private PlaybackInfo getResetPlaybackInfo( - boolean resetPosition, boolean resetState, int playbackState) { + boolean resetPosition, boolean resetState, @Player.State int playbackState) { if (resetPosition) { maskingWindowIndex = 0; maskingPeriodIndex = 0; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java index f45e61fb37..cf4643c5da 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java @@ -52,7 +52,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelectorResult; */ public final long contentPositionUs; /** The current playback state. One of the {@link Player}.STATE_ constants. */ - public final int playbackState; + @Player.State public final int playbackState; /** Whether the player is currently loading. */ public final boolean isLoading; /** The currently available track groups. */ @@ -128,7 +128,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelectorResult; MediaPeriodId periodId, long startPositionUs, long contentPositionUs, - int playbackState, + @Player.State int playbackState, boolean isLoading, TrackGroupArray trackGroups, TrackSelectorResult trackSelectorResult, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Player.java b/library/core/src/main/java/com/google/android/exoplayer2/Player.java index 8885be2e02..0e19212afa 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Player.java @@ -361,9 +361,9 @@ public interface Player { * #getPlaybackState()} changes. * * @param playWhenReady Whether playback will proceed when ready. - * @param playbackState One of the {@code STATE} constants. + * @param playbackState The new {@link State playback state}. */ - default void onPlayerStateChanged(boolean playWhenReady, int playbackState) {} + default void onPlayerStateChanged(boolean playWhenReady, @State int playbackState) {} /** * Called when the value of {@link #getRepeatMode()} changes. @@ -443,6 +443,14 @@ public interface Player { } } + /** + * Playback state. One of {@link #STATE_IDLE}, {@link #STATE_BUFFERING}, {@link #STATE_READY} or + * {@link #STATE_ENDED}. + */ + @Documented + @Retention(RetentionPolicy.SOURCE) + @IntDef({STATE_IDLE, STATE_BUFFERING, STATE_READY, STATE_ENDED}) + @interface State {} /** * The player does not have any media to play. */ @@ -581,10 +589,11 @@ public interface Player { void removeListener(EventListener listener); /** - * Returns the current state of the player. + * Returns the current {@link State playback state} of the player. * - * @return One of the {@code STATE} constants defined in this interface. + * @return The current {@link State playback state}. */ + @State int getPlaybackState(); /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index 910404a875..2ac71db44f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -873,6 +873,7 @@ public class SimpleExoPlayer extends BasePlayer } @Override + @Player.State public int getPlaybackState() { verifyApplicationThread(); return player.getPlaybackState(); 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 c0d96e8e88..094024bc36 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 @@ -464,7 +464,7 @@ public class AnalyticsCollector } @Override - public final void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public final void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { EventTime eventTime = generatePlayingMediaPeriodEventTime(); for (AnalyticsListener listener : listeners) { listener.onPlayerStateChanged(eventTime, playWhenReady, playbackState); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java index 7f74216cc8..9a0339f5d4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java @@ -127,10 +127,10 @@ public interface AnalyticsListener { * * @param eventTime The event time. * @param playWhenReady Whether the playback will proceed when ready. - * @param playbackState One of the {@link Player}.STATE constants. + * @param playbackState The new {@link Player.State playback state}. */ default void onPlayerStateChanged( - EventTime eventTime, boolean playWhenReady, int playbackState) {} + EventTime eventTime, boolean playWhenReady, @Player.State int playbackState) {} /** * Called when the timeline changed. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java index bb3dc8b83a..7a2ea5daf2 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java @@ -93,7 +93,8 @@ public class EventLogger implements AnalyticsListener { } @Override - public void onPlayerStateChanged(EventTime eventTime, boolean playWhenReady, int state) { + public void onPlayerStateChanged( + EventTime eventTime, boolean playWhenReady, @Player.State int state) { logd(eventTime, "state", playWhenReady + ", " + getStateString(state)); } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java index 6d0627593f..639e80348b 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java @@ -509,7 +509,7 @@ public final class ExoPlayerTest { private int currentPlaybackState = Player.STATE_IDLE; @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { currentPlaybackState = playbackState; } @@ -2113,7 +2113,7 @@ public final class ExoPlayerTest { final EventListener eventListener1 = new EventListener() { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { eventListener1States.add(playbackState); if (playbackState == Player.STATE_READY) { playerReference.get().stop(/* reset= */ true); @@ -2123,7 +2123,7 @@ public final class ExoPlayerTest { final EventListener eventListener2 = new EventListener() { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { eventListener2States.add(playbackState); } }; @@ -2170,7 +2170,7 @@ public final class ExoPlayerTest { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { eventListenerPlayWhenReady.add(playWhenReady); eventListenerStates.add(playbackState); if (playbackState == Player.STATE_READY) { @@ -2219,7 +2219,7 @@ public final class ExoPlayerTest { EventListener eventListener = new EventListener() { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (playbackState == Player.STATE_READY && clockAtStartMs.get() == C.TIME_UNSET) { clockAtStartMs.set(clock.elapsedRealtime()); } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java index c455e39de6..2e9b539096 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java @@ -913,7 +913,7 @@ public final class AnalyticsCollectorTest { @Override public void onPlayerStateChanged( - EventTime eventTime, boolean playWhenReady, int playbackState) { + EventTime eventTime, boolean playWhenReady, @Player.State int playbackState) { reportedEvents.add(new ReportedEvent(EVENT_PLAYER_STATE_CHANGED, eventTime)); } diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java index da2081db31..0841296193 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java @@ -79,7 +79,7 @@ public class DebugTextViewHelper implements Player.EventListener, Runnable { // Player.EventListener implementation. @Override - public final void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public final void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { updateAndPost(); } 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 a5deb808c1..552774fe47 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 @@ -1130,7 +1130,7 @@ public class PlayerControlView extends FrameLayout { } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { updatePlayPauseButton(); updateProgress(); } 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 1dbd696b12..aa9e4b1492 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 @@ -1276,7 +1276,7 @@ public class PlayerNotificationManager { private class PlayerListener implements Player.EventListener { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { if (wasPlayWhenReady != playWhenReady || lastPlaybackState != playbackState) { startOrUpdateNotification(); wasPlayWhenReady = playWhenReady; 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 06f0927a99..dde35e6e99 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 @@ -1427,7 +1427,7 @@ public class PlayerView extends FrameLayout implements AdsLoader.AdViewProvider // Player.EventListener implementation @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { updateBuffering(); updateErrorMessage(); if (isPlayingAd() && controllerHideDuringAds) { diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java index f1fdfc42aa..facbe8bbde 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java @@ -669,7 +669,8 @@ public abstract class Action { player.addListener( new Player.EventListener() { @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged( + boolean playWhenReady, @Player.State int playbackState) { if (targetPlaybackState == playbackState) { player.removeListener(this); nextAction.schedule(player, trackSelector, surface, handler); diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java index 74c0d4bb43..90f2294bfc 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java @@ -183,7 +183,7 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { @Override public final void onPlayerStateChanged( - EventTime eventTime, boolean playWhenReady, int playbackState) { + EventTime eventTime, boolean playWhenReady, @Player.State int playbackState) { Log.d(tag, "state [" + playWhenReady + ", " + playbackState + "]"); playerWasPrepared |= playbackState != Player.STATE_IDLE; if (playbackState == Player.STATE_ENDED diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java index 517f1ce2e7..0d55dd8530 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoPlayerTestRunner.java @@ -589,7 +589,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc } @Override - public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) { playerWasPrepared |= playbackState != Player.STATE_IDLE; if (playbackState == Player.STATE_ENDED || (playbackState == Player.STATE_IDLE && playerWasPrepared)) { diff --git a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java index a0d8c7f9d8..56de0a8b33 100644 --- a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java +++ b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java @@ -75,6 +75,7 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer { } @Override + @Player.State public int getPlaybackState() { throw new UnsupportedOperationException(); }