diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt
index ccea6fa25..2a2129feb 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackNotification.kt
@@ -160,7 +160,7 @@ class PlaybackNotification private constructor(
iconRes, actionName,
PendingIntent.getBroadcast(
context, REQUEST_CODE,
- Intent(actionName), PendingIntent.FLAG_UPDATE_CURRENT
+ Intent(actionName), PendingIntent.FLAG_UPDATE_CURRENT,
)
)
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt
index aeba83767..7bf692edb 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt
@@ -188,7 +188,17 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac
releaseWakelock()
}
- Player.STATE_ENDED -> playbackManager.next()
+ Player.STATE_ENDED -> {
+ if (playbackManager.loopMode == LoopMode.TRACK) {
+ playbackManager.rewind()
+
+ if (settingsManager.pauseOnLoop) {
+ playbackManager.setPlaying(false)
+ }
+ } else {
+ playbackManager.next()
+ }
+ }
else -> {}
}
@@ -249,12 +259,6 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac
}
override fun onLoopUpdate(loopMode: LoopMode) {
- player.repeatMode = if (loopMode == LoopMode.TRACK) {
- Player.REPEAT_MODE_ONE
- } else {
- Player.REPEAT_MODE_OFF
- }
-
if (!settingsManager.useAltNotifAction) {
notification.setLoop(this, loopMode)
diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
index 8cbd65b4a..2f11a99fe 100644
--- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
+++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsManager.kt
@@ -97,6 +97,10 @@ class SettingsManager private constructor(context: Context) :
val rewindWithPrev: Boolean
get() = sharedPrefs.getBoolean(KEY_PREV_REWIND, true)
+ /** Whether [LoopMode.TRACK] should pause when the track repeats */
+ val pauseOnLoop: Boolean
+ get() = sharedPrefs.getBoolean(KEY_LOOP_PAUSE, false)
+
/** The current [SortMode] of the library. */
var librarySortMode: SortMode
get() = sharedPrefs.getData(KEY_LIB_SORT_MODE, SortMode::fromInt) ?: SortMode.ALPHA_DOWN
@@ -214,6 +218,7 @@ class SettingsManager private constructor(context: Context) :
const val KEY_SONG_PLAYBACK_MODE = "KEY_SONG_PLAY_MODE2"
const val KEY_KEEP_SHUFFLE = "KEY_KEEP_SHUFFLE"
const val KEY_PREV_REWIND = "KEY_PREV_REWIND"
+ const val KEY_LOOP_PAUSE = "KEY_LOOP_PAUSE"
const val KEY_SAVE_STATE = "KEY_SAVE_STATE"
const val KEY_BLACKLIST = "KEY_BLACKLIST"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ee705e126..377982a29 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -62,8 +62,8 @@
Light
Dark
Accent
- Black night theme
- Use a pure-black night theme
+ Black theme
+ Use a pure-black dark theme
Display
Library Items
@@ -89,6 +89,8 @@
Keep shuffle on when playing a new song
Rewind before skipping back
Rewind before skipping to the previous song
+ Pause on repeat
+ Pause when a song repeats
Content
Save playback state
@@ -157,7 +159,6 @@
Next From: %s
Songs loaded: %d
-
- %d Song
- %d Songs
diff --git a/app/src/main/res/xml/prefs_main.xml b/app/src/main/res/xml/prefs_main.xml
index a37e73412..2f716ad55 100644
--- a/app/src/main/res/xml/prefs_main.xml
+++ b/app/src/main/res/xml/prefs_main.xml
@@ -126,6 +126,14 @@
app:summary="@string/setting_behavior_rewind_prev_desc"
app:title="@string/setting_behavior_rewind_prev" />
+
+