Commit 0f312561 by aquilescanta Committed by Oliver Woodman

Add shuffle and repeat modes to media session playback state invalidation

Which ensures both get updated when the MediaSessionConnector player
changes.

Issue:#6582
PiperOrigin-RevId: 277254889
parent 81b8396b
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
### dev-v2 (not yet released) ### ### dev-v2 (not yet released) ###
* MediaSession extension: Update shuffle and repeat modes when playback state
is invalidated ([#6582](https://github.com/google/ExoPlayer/issues/6582)).
* AV1 extension: Uses libgav1 to decode AV1 videos. Android 10 includes an AV1 * AV1 extension: Uses libgav1 to decode AV1 videos. Android 10 includes an AV1
decoder, but the older versions of Android require this extension for playback decoder, but the older versions of Android require this extension for playback
of AV1 streams ([#3353](https://github.com/google/ExoPlayer/issues/3353)). of AV1 streams ([#3353](https://github.com/google/ExoPlayer/issues/3353)).
......
...@@ -750,6 +750,18 @@ public final class MediaSessionConnector { ...@@ -750,6 +750,18 @@ public final class MediaSessionConnector {
sessionPlaybackSpeed, sessionPlaybackSpeed,
/* updateTime= */ SystemClock.elapsedRealtime()) /* updateTime= */ SystemClock.elapsedRealtime())
.setExtras(extras); .setExtras(extras);
@Player.RepeatMode int repeatMode = player.getRepeatMode();
mediaSession.setRepeatMode(
repeatMode == Player.REPEAT_MODE_ONE
? PlaybackStateCompat.REPEAT_MODE_ONE
: repeatMode == Player.REPEAT_MODE_ALL
? PlaybackStateCompat.REPEAT_MODE_ALL
: PlaybackStateCompat.REPEAT_MODE_NONE);
mediaSession.setShuffleMode(
player.getShuffleModeEnabled()
? PlaybackStateCompat.SHUFFLE_MODE_ALL
: PlaybackStateCompat.SHUFFLE_MODE_NONE);
mediaSession.setPlaybackState(builder.build()); mediaSession.setPlaybackState(builder.build());
} }
...@@ -1068,21 +1080,11 @@ public final class MediaSessionConnector { ...@@ -1068,21 +1080,11 @@ public final class MediaSessionConnector {
@Override @Override
public void onRepeatModeChanged(@Player.RepeatMode int repeatMode) { public void onRepeatModeChanged(@Player.RepeatMode int repeatMode) {
mediaSession.setRepeatMode(
repeatMode == Player.REPEAT_MODE_ONE
? PlaybackStateCompat.REPEAT_MODE_ONE
: repeatMode == Player.REPEAT_MODE_ALL
? PlaybackStateCompat.REPEAT_MODE_ALL
: PlaybackStateCompat.REPEAT_MODE_NONE);
invalidateMediaSessionPlaybackState(); invalidateMediaSessionPlaybackState();
} }
@Override @Override
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
mediaSession.setShuffleMode(
shuffleModeEnabled
? PlaybackStateCompat.SHUFFLE_MODE_ALL
: PlaybackStateCompat.SHUFFLE_MODE_NONE);
invalidateMediaSessionPlaybackState(); invalidateMediaSessionPlaybackState();
invalidateMediaSessionQueue(); invalidateMediaSessionQueue();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment