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" /> + +