diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java index 9b5291c476..d0bb24424f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java @@ -1485,6 +1485,14 @@ public interface ExoPlayer extends Player { @UnstableApi void setScrubbingModeEnabled(boolean scrubbingModeEnabled); + /** + * Returns whether the player is optimized for scrubbing (many frequent seeks). + * + *

See {@link #setScrubbingModeEnabled(boolean)}. + */ + @UnstableApi + boolean isScrubbingModeEnabled(); + /** * Sets the parameters that control behavior in {@linkplain #setScrubbingModeEnabled scrubbing * mode}. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java index 9a9b14058a..5548e70510 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -1611,6 +1611,12 @@ import java.util.concurrent.CopyOnWriteArraySet; maybeUpdatePlaybackSuppressionReason(); } + @Override + public boolean isScrubbingModeEnabled() { + verifyApplicationThread(); + return scrubbingModeEnabled; + } + @Override public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { verifyApplicationThread(); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java index 7a9723c1ea..a778b94fad 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java @@ -628,6 +628,12 @@ public class SimpleExoPlayer extends BasePlayer implements ExoPlayer { player.setScrubbingModeEnabled(scrubbingModeEnabled); } + @Override + public boolean isScrubbingModeEnabled() { + blockUntilConstructorFinished(); + return player.isScrubbingModeEnabled(); + } + @Override public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { blockUntilConstructorFinished(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerScrubbingTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerScrubbingTest.java index 58945602d4..7bf3938a9d 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerScrubbingTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerScrubbingTest.java @@ -63,6 +63,21 @@ import org.mockito.InOrder; @RunWith(AndroidJUnit4.class) public final class ExoPlayerScrubbingTest { + @Test + public void scrubbingMode_getterWorks() throws Exception { + ExoPlayer player = + new TestExoPlayerBuilder(ApplicationProvider.getApplicationContext()).build(); + player.setMediaSource(new FakeMediaSource()); + player.prepare(); + + assertThat(player.isScrubbingModeEnabled()).isFalse(); + player.setScrubbingModeEnabled(true); + assertThat(player.isScrubbingModeEnabled()).isTrue(); + player.setScrubbingModeEnabled(false); + assertThat(player.isScrubbingModeEnabled()).isFalse(); + player.release(); + } + @Test public void scrubbingMode_suppressesPlayback() throws Exception { ExoPlayer player = diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java index 563add2a46..89d3bd58c1 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java @@ -221,6 +221,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { throw new UnsupportedOperationException(); } + @Override + public boolean isScrubbingModeEnabled() { + throw new UnsupportedOperationException(); + } + @Override public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { throw new UnsupportedOperationException();