diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 159ecbd6efc..c5a5f7a0266 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -634,6 +634,11 @@ private void initPlayer(final boolean playOnReady) { simpleExoPlayer.setWakeMode(C.WAKE_MODE_NETWORK); simpleExoPlayer.setHandleAudioBecomingNoisy(true); + final int repeatMode = prefs.getInt( + context.getString(R.string.repeat_mode_key), REPEAT_MODE_OFF + ); + simpleExoPlayer.setRepeatMode(repeatMode); + audioReactor = new AudioReactor(context, simpleExoPlayer); registerBroadcastReceiver(); @@ -1286,6 +1291,10 @@ public void onRepeatModeChanged(@RepeatMode final int repeatMode) { } UIs.call(playerUi -> playerUi.onRepeatModeChanged(repeatMode)); notifyPlaybackUpdateToListeners(); + prefs + .edit() + .putInt(context.getString(R.string.repeat_mode_key), repeatMode) + .apply(); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index b68d3d94dbd..1eb140c4d32 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -400,6 +400,8 @@ public void initPlayback() { // #6825 - Ensure that the shuffle-button is in the correct state on the UI setShuffleButton(player.getExoPlayer().getShuffleModeEnabled()); + // Ensure that the repeat-button is in the correct state on the UI + setRepeatButton(player.getRepeatMode()); } public abstract void removeViewFromParent(); @@ -951,16 +953,7 @@ public void onShuffleClicked() { public void onRepeatModeChanged(@RepeatMode final int repeatMode) { super.onRepeatModeChanged(repeatMode); - if (repeatMode == REPEAT_MODE_ALL) { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_all); - } else if (repeatMode == REPEAT_MODE_ONE) { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_one); - } else /* repeatMode == REPEAT_MODE_OFF */ { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_off); - } + setRepeatButton(repeatMode); } @Override @@ -980,6 +973,19 @@ private void setMuteButton(final boolean isMuted) { ? R.drawable.ic_volume_off : R.drawable.ic_volume_up)); } + private void setRepeatButton(@RepeatMode final int repeatMode) { + if (repeatMode == REPEAT_MODE_ALL) { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_all); + } else if (repeatMode == REPEAT_MODE_ONE) { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_one); + } else /* repeatMode == REPEAT_MODE_OFF */ { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_off); + } + } + private void setShuffleButton(final boolean shuffled) { binding.shuffleButton.setImageAlpha(shuffled ? 255 : 77); } diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index d01709d27ba..bacc5ed8cc5 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -1514,4 +1514,5 @@ @string/image_quality_medium_key @string/image_quality_high_key + repeat_mode_key