Fix #1795: Persist shuffle and repeat mode across sessions
This commit is contained in:
parent
eee1172e8a
commit
00d05cc6fc
@ -181,6 +181,8 @@ public final class Player implements PlaybackListener, Listener {
|
||||
|
||||
public static final int RENDERER_UNAVAILABLE = -1;
|
||||
private static final String PICASSO_PLAYER_THUMBNAIL_TAG = "PICASSO_PLAYER_THUMBNAIL_TAG";
|
||||
private static final String PREF_KEY_SHUFFLE_ENABLED = "player_shuffle_enabled";
|
||||
private static final String PREF_KEY_REPEAT_MODE = "player_repeat_mode";
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////
|
||||
// Playback
|
||||
@ -617,6 +619,22 @@ public final class Player implements PlaybackListener, Listener {
|
||||
playQueue.init();
|
||||
reloadPlayQueueManager();
|
||||
|
||||
final int persistedRepeat = loadRepeatFromPrefs();
|
||||
final boolean persistedShuffle = loadShuffleFromPrefs();
|
||||
|
||||
simpleExoPlayer.setRepeatMode(persistedRepeat);
|
||||
simpleExoPlayer.setShuffleModeEnabled(persistedShuffle);
|
||||
|
||||
if (persistedShuffle && !playQueue.isShuffled()) {
|
||||
playQueue.shuffle();
|
||||
} else if (!persistedShuffle && playQueue.isShuffled()) {
|
||||
playQueue.unshuffle();
|
||||
}
|
||||
|
||||
UIs.call(ui -> ui.onRepeatModeChanged(persistedRepeat));
|
||||
UIs.call(ui -> ui.onShuffleModeEnabledChanged(persistedShuffle));
|
||||
notifyPlaybackUpdateToListeners();
|
||||
|
||||
UIs.call(PlayerUi::initPlayback);
|
||||
|
||||
simpleExoPlayer.setVolume(isMuted() ? 0 : 1);
|
||||
@ -1263,6 +1281,23 @@ public final class Player implements PlaybackListener, Listener {
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
//region Repeat and shuffle
|
||||
|
||||
private void saveShuffleToPrefs(final boolean enabled) {
|
||||
prefs.edit().putBoolean(PREF_KEY_SHUFFLE_ENABLED, enabled).apply();
|
||||
}
|
||||
|
||||
private void saveRepeatToPrefs(@RepeatMode final int repeatMode) {
|
||||
prefs.edit().putInt(PREF_KEY_REPEAT_MODE, repeatMode).apply();
|
||||
}
|
||||
|
||||
private boolean loadShuffleFromPrefs() {
|
||||
return prefs.getBoolean(PREF_KEY_SHUFFLE_ENABLED, false);
|
||||
}
|
||||
|
||||
@RepeatMode
|
||||
private int loadRepeatFromPrefs() {
|
||||
return prefs.getInt(PREF_KEY_REPEAT_MODE, REPEAT_MODE_OFF);
|
||||
}
|
||||
|
||||
@RepeatMode
|
||||
public int getRepeatMode() {
|
||||
return exoPlayerIsNull() ? REPEAT_MODE_OFF : simpleExoPlayer.getRepeatMode();
|
||||
@ -1293,6 +1328,9 @@ public final class Player implements PlaybackListener, Listener {
|
||||
Log.d(TAG, "ExoPlayer - onRepeatModeChanged() called with: "
|
||||
+ "repeatMode = [" + repeatMode + "]");
|
||||
}
|
||||
|
||||
saveRepeatToPrefs(repeatMode);
|
||||
|
||||
UIs.call(playerUi -> playerUi.onRepeatModeChanged(repeatMode));
|
||||
notifyPlaybackUpdateToListeners();
|
||||
}
|
||||
@ -1304,6 +1342,8 @@ public final class Player implements PlaybackListener, Listener {
|
||||
+ "mode = [" + shuffleModeEnabled + "]");
|
||||
}
|
||||
|
||||
saveShuffleToPrefs(shuffleModeEnabled);
|
||||
|
||||
if (playQueue != null) {
|
||||
if (shuffleModeEnabled) {
|
||||
playQueue.shuffle();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user