Merge 00d05cc6fc5742b6e2af2f280a73c74249521b09 into 35b70c5e9e8d791ae268bac677a3b760b1b4e8bf

This commit is contained in:
Guanbao Li 2026-02-20 16:34:35 -08:00 committed by GitHub
commit 6112920aa6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -182,6 +182,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
@ -619,6 +621,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);
@ -1271,6 +1289,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();
@ -1301,6 +1336,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();
}
@ -1312,6 +1350,8 @@ public final class Player implements PlaybackListener, Listener {
+ "mode = [" + shuffleModeEnabled + "]");
}
saveShuffleToPrefs(shuffleModeEnabled);
if (playQueue != null) {
if (shuffleModeEnabled) {
playQueue.shuffle();