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