diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cdefcb99da..8d1fc7850c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -6,12 +6,11 @@ * Add `needsReconfiguration` API to the `MediaCodecAdapter` interface. * Add `getSeekForwardIncrement`, `seekForward`, `getSeekBackIncrement` and `seekBack` methods to `Player`. - * Add `getMaxSeekToPreviousPosition` and `seekToPrevious` methods to - `Player`. - * Add `seekForward` and `seekBack` methods to `Player`. + * Add `getMaxSeekToPreviousPosition`, `seekToPrevious` and `seekToNext` + methods to `Player`. * Rename `Player` commands `COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM`, - `COMMAND_SEEK_TO_NEXT_MEDIA_ITEM`, `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM` and - `COMMAND_SEEK_TO_MEDIA_ITEM` to `COMMAND_SEEK_IN_CURRENT_WINDOW`, + `COMMAND_SEEK_TO_NEXT_MEDIA_ITEM`, `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM` + and `COMMAND_SEEK_TO_MEDIA_ITEM` to `COMMAND_SEEK_IN_CURRENT_WINDOW`, `COMMAND_SEEK_TO_NEXT_WINDOW`, `COMMAND_SEEK_TO_PREVIOUS_WINDOW` and `COMMAND_SEEK_TO_WINDOW`, respectively. * Make `Player` depend on the new `PlaybackException` class instead of diff --git a/library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java b/library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java index 62cc952cd9..251e4a523f 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/BasePlayer.java @@ -175,6 +175,19 @@ public abstract class BasePlayer implements Player { } } + @Override + public final void seekToNext() { + Timeline timeline = getCurrentTimeline(); + if (timeline.isEmpty() || isPlayingAd()) { + return; + } + if (hasNext()) { + next(); + } else if (isCurrentWindowLive() && isCurrentWindowDynamic()) { + seekToDefaultPosition(); + } + } + @Override public final void setPlaybackSpeed(float speed) { setPlaybackParameters(getPlaybackParameters().withSpeed(speed)); diff --git a/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java b/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java index 8f14246283..966ddd8e69 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java @@ -297,6 +297,11 @@ public class ForwardingPlayer implements Player { player.next(); } + @Override + public void seekToNext() { + player.seekToNext(); + } + @Override public void setPlaybackParameters(PlaybackParameters playbackParameters) { player.setPlaybackParameters(playbackParameters); diff --git a/library/common/src/main/java/com/google/android/exoplayer2/Player.java b/library/common/src/main/java/com/google/android/exoplayer2/Player.java index 45a67291a9..254a67fe5b 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/Player.java @@ -1715,6 +1715,20 @@ public interface Player { */ void next(); + /** + * Seeks to a later position in the current or next window (if available). More precisely: + * + *