diff --git a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java index 84c164f76c..4dc1100c1e 100644 --- a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java +++ b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java @@ -621,7 +621,9 @@ public final class MediaSessionConnector { @Override public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { - // TODO: Support shuffle mode in MediaSessionConnector. + mediaSession.setShuffleMode(shuffleModeEnabled ? PlaybackStateCompat.SHUFFLE_MODE_ALL + : PlaybackStateCompat.SHUFFLE_MODE_NONE); + updateMediaSessionPlaybackState(); } @Override @@ -805,6 +807,14 @@ public final class MediaSessionConnector { } } + @Override + public void onSetShuffleMode(int shuffleMode) { + if (canDispatchToQueueNavigator(PlaybackStateCompat.ACTION_SET_SHUFFLE_MODE_ENABLED)) { + queueNavigator.onSetShuffleModeEnabled(player, + shuffleMode != PlaybackStateCompat.SHUFFLE_MODE_NONE); + } + } + @Override public void onAddQueueItem(MediaDescriptionCompat description) { if (queueEditor != null) { diff --git a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/TimelineQueueNavigator.java b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/TimelineQueueNavigator.java index 521b4cd6e3..435d994dcc 100644 --- a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/TimelineQueueNavigator.java +++ b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/TimelineQueueNavigator.java @@ -163,7 +163,7 @@ public abstract class TimelineQueueNavigator implements MediaSessionConnector.Qu @Override public void onSetShuffleModeEnabled(Player player, boolean enabled) { - // TODO: Implement this. + player.setShuffleModeEnabled(enabled); } private void publishFloatingQueueWindow(Player player) {