mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add the ExoPlayer.Builder.setMaxSeekToPreviousPosition(long) method
This method allows customizing the maximum position when using `Player.seekToPrevious()`. This commit also adds two new methods to `TestExoPlayerBuilder`: - `setMaxSeekToPreviousPosition(long)` - `getMaxSeekToPreviousPosition()`
This commit is contained in:
parent
4109e2edd9
commit
6153b6d740
3 changed files with 43 additions and 1 deletions
|
|
@ -495,6 +495,7 @@ public interface ExoPlayer extends Player {
|
||||||
/* package */ SeekParameters seekParameters;
|
/* package */ SeekParameters seekParameters;
|
||||||
/* package */ long seekBackIncrementMs;
|
/* package */ long seekBackIncrementMs;
|
||||||
/* package */ long seekForwardIncrementMs;
|
/* package */ long seekForwardIncrementMs;
|
||||||
|
/* package */ long maxSeekToPreviousPositionMs;
|
||||||
/* package */ LivePlaybackSpeedControl livePlaybackSpeedControl;
|
/* package */ LivePlaybackSpeedControl livePlaybackSpeedControl;
|
||||||
/* package */ long releaseTimeoutMs;
|
/* package */ long releaseTimeoutMs;
|
||||||
/* package */ long detachSurfaceTimeoutMs;
|
/* package */ long detachSurfaceTimeoutMs;
|
||||||
|
|
@ -702,6 +703,7 @@ public interface ExoPlayer extends Player {
|
||||||
seekParameters = SeekParameters.DEFAULT;
|
seekParameters = SeekParameters.DEFAULT;
|
||||||
seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS;
|
seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS;
|
||||||
seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS;
|
seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS;
|
||||||
|
maxSeekToPreviousPositionMs = C.DEFAULT_MAX_SEEK_TO_PREVIOUS_POSITION_MS;
|
||||||
livePlaybackSpeedControl = new DefaultLivePlaybackSpeedControl.Builder().build();
|
livePlaybackSpeedControl = new DefaultLivePlaybackSpeedControl.Builder().build();
|
||||||
clock = Clock.DEFAULT;
|
clock = Clock.DEFAULT;
|
||||||
releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS;
|
releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS;
|
||||||
|
|
@ -1124,6 +1126,24 @@ public interface ExoPlayer extends Player {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the maximum position for which {@link #seekToPrevious()} seeks to the previous {@link
|
||||||
|
* MediaItem}.
|
||||||
|
*
|
||||||
|
* @param maxSeekToPreviousPositionMs The maximum position, in milliseconds.
|
||||||
|
* @return This builder.
|
||||||
|
* @throws IllegalArgumentException If {@code maxSeekToPreviousPositionMs} is negative.
|
||||||
|
* @throws IllegalStateException If {@link #build()} has already been called.
|
||||||
|
*/
|
||||||
|
@CanIgnoreReturnValue
|
||||||
|
@UnstableApi
|
||||||
|
public Builder setMaxSeekToPreviousPosition(long maxSeekToPreviousPositionMs) {
|
||||||
|
checkArgument(maxSeekToPreviousPositionMs >= 0L);
|
||||||
|
checkState(!buildCalled);
|
||||||
|
this.maxSeekToPreviousPositionMs = maxSeekToPreviousPositionMs;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a timeout for calls to {@link #release} and {@link #setForegroundMode}.
|
* Sets a timeout for calls to {@link #release} and {@link #setForegroundMode}.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,7 @@ import java.util.concurrent.TimeoutException;
|
||||||
private final BandwidthMeter bandwidthMeter;
|
private final BandwidthMeter bandwidthMeter;
|
||||||
private final long seekBackIncrementMs;
|
private final long seekBackIncrementMs;
|
||||||
private final long seekForwardIncrementMs;
|
private final long seekForwardIncrementMs;
|
||||||
|
private final long maxSeekToPreviousPositionMs;
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
private final ComponentListener componentListener;
|
private final ComponentListener componentListener;
|
||||||
private final FrameMetadataListener frameMetadataListener;
|
private final FrameMetadataListener frameMetadataListener;
|
||||||
|
|
@ -286,6 +287,7 @@ import java.util.concurrent.TimeoutException;
|
||||||
this.seekParameters = builder.seekParameters;
|
this.seekParameters = builder.seekParameters;
|
||||||
this.seekBackIncrementMs = builder.seekBackIncrementMs;
|
this.seekBackIncrementMs = builder.seekBackIncrementMs;
|
||||||
this.seekForwardIncrementMs = builder.seekForwardIncrementMs;
|
this.seekForwardIncrementMs = builder.seekForwardIncrementMs;
|
||||||
|
this.maxSeekToPreviousPositionMs = builder.maxSeekToPreviousPositionMs;
|
||||||
this.pauseAtEndOfMediaItems = builder.pauseAtEndOfMediaItems;
|
this.pauseAtEndOfMediaItems = builder.pauseAtEndOfMediaItems;
|
||||||
this.applicationLooper = builder.looper;
|
this.applicationLooper = builder.looper;
|
||||||
this.clock = builder.clock;
|
this.clock = builder.clock;
|
||||||
|
|
@ -972,7 +974,7 @@ import java.util.concurrent.TimeoutException;
|
||||||
@Override
|
@Override
|
||||||
public long getMaxSeekToPreviousPosition() {
|
public long getMaxSeekToPreviousPosition() {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
return C.DEFAULT_MAX_SEEK_TO_PREVIOUS_POSITION_MS;
|
return maxSeekToPreviousPositionMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ public class TestExoPlayerBuilder {
|
||||||
private @MonotonicNonNull Looper looper;
|
private @MonotonicNonNull Looper looper;
|
||||||
private long seekBackIncrementMs;
|
private long seekBackIncrementMs;
|
||||||
private long seekForwardIncrementMs;
|
private long seekForwardIncrementMs;
|
||||||
|
private long maxSeekToPreviousPositionMs;
|
||||||
private boolean deviceVolumeControlEnabled;
|
private boolean deviceVolumeControlEnabled;
|
||||||
private boolean suppressPlaybackWhenUnsuitableOutput;
|
private boolean suppressPlaybackWhenUnsuitableOutput;
|
||||||
@Nullable private ExoPlayer.PreloadConfiguration preloadConfiguration;
|
@Nullable private ExoPlayer.PreloadConfiguration preloadConfiguration;
|
||||||
|
|
@ -71,6 +72,7 @@ public class TestExoPlayerBuilder {
|
||||||
}
|
}
|
||||||
seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS;
|
seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS;
|
||||||
seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS;
|
seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS;
|
||||||
|
maxSeekToPreviousPositionMs = C.DEFAULT_MAX_SEEK_TO_PREVIOUS_POSITION_MS;
|
||||||
deviceVolumeControlEnabled = false;
|
deviceVolumeControlEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -316,6 +318,23 @@ public class TestExoPlayerBuilder {
|
||||||
return seekForwardIncrementMs;
|
return seekForwardIncrementMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the max seek to previous position, in milliseconds, to be used by the player.
|
||||||
|
*
|
||||||
|
* @param maxSeekToPreviousPositionMs The max seek to previous position to be used by the player.
|
||||||
|
* @return This builder.
|
||||||
|
*/
|
||||||
|
@CanIgnoreReturnValue
|
||||||
|
public TestExoPlayerBuilder setMaxSeekToPreviousPosition(long maxSeekToPreviousPositionMs) {
|
||||||
|
this.maxSeekToPreviousPositionMs = maxSeekToPreviousPositionMs;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the max seek to previous position used by the player. */
|
||||||
|
public long getMaxSeekToPreviousPosition() {
|
||||||
|
return maxSeekToPreviousPositionMs;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See {@link ExoPlayer.Builder#setSuppressPlaybackOnUnsuitableOutput(boolean)} for details.
|
* See {@link ExoPlayer.Builder#setSuppressPlaybackOnUnsuitableOutput(boolean)} for details.
|
||||||
*
|
*
|
||||||
|
|
@ -379,6 +398,7 @@ public class TestExoPlayerBuilder {
|
||||||
.setLooper(looper)
|
.setLooper(looper)
|
||||||
.setSeekBackIncrementMs(seekBackIncrementMs)
|
.setSeekBackIncrementMs(seekBackIncrementMs)
|
||||||
.setSeekForwardIncrementMs(seekForwardIncrementMs)
|
.setSeekForwardIncrementMs(seekForwardIncrementMs)
|
||||||
|
.setMaxSeekToPreviousPosition(maxSeekToPreviousPositionMs)
|
||||||
.setDeviceVolumeControlEnabled(deviceVolumeControlEnabled)
|
.setDeviceVolumeControlEnabled(deviceVolumeControlEnabled)
|
||||||
.setSuppressPlaybackOnUnsuitableOutput(suppressPlaybackWhenUnsuitableOutput)
|
.setSuppressPlaybackOnUnsuitableOutput(suppressPlaybackWhenUnsuitableOutput)
|
||||||
.experimentalSetDynamicSchedulingEnabled(dynamicSchedulingEnabled);
|
.experimentalSetDynamicSchedulingEnabled(dynamicSchedulingEnabled);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue