Add ExoPlayer.isScrubbingModeEnabled

This helps integration with `PlayerControlView` in a follow-up change,
where we need to reliably know if scrubbing mode is still enabled (in
case someone else disables it after we enable it).

PiperOrigin-RevId: 750913644
This commit is contained in:
ibaker 2025-04-24 02:33:32 -07:00 committed by Copybara-Service
parent d9a92e2586
commit 4189a7c8bd
5 changed files with 40 additions and 0 deletions

View File

@ -1485,6 +1485,14 @@ public interface ExoPlayer extends Player {
@UnstableApi @UnstableApi
void setScrubbingModeEnabled(boolean scrubbingModeEnabled); void setScrubbingModeEnabled(boolean scrubbingModeEnabled);
/**
* Returns whether the player is optimized for scrubbing (many frequent seeks).
*
* <p>See {@link #setScrubbingModeEnabled(boolean)}.
*/
@UnstableApi
boolean isScrubbingModeEnabled();
/** /**
* Sets the parameters that control behavior in {@linkplain #setScrubbingModeEnabled scrubbing * Sets the parameters that control behavior in {@linkplain #setScrubbingModeEnabled scrubbing
* mode}. * mode}.

View File

@ -1611,6 +1611,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
maybeUpdatePlaybackSuppressionReason(); maybeUpdatePlaybackSuppressionReason();
} }
@Override
public boolean isScrubbingModeEnabled() {
verifyApplicationThread();
return scrubbingModeEnabled;
}
@Override @Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
verifyApplicationThread(); verifyApplicationThread();

View File

@ -628,6 +628,12 @@ public class SimpleExoPlayer extends BasePlayer implements ExoPlayer {
player.setScrubbingModeEnabled(scrubbingModeEnabled); player.setScrubbingModeEnabled(scrubbingModeEnabled);
} }
@Override
public boolean isScrubbingModeEnabled() {
blockUntilConstructorFinished();
return player.isScrubbingModeEnabled();
}
@Override @Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
blockUntilConstructorFinished(); blockUntilConstructorFinished();

View File

@ -63,6 +63,21 @@ import org.mockito.InOrder;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public final class ExoPlayerScrubbingTest { 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 @Test
public void scrubbingMode_suppressesPlayback() throws Exception { public void scrubbingMode_suppressesPlayback() throws Exception {
ExoPlayer player = ExoPlayer player =

View File

@ -221,6 +221,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public boolean isScrubbingModeEnabled() {
throw new UnsupportedOperationException();
}
@Override @Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) { public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();