diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
index 75d8cc7..e88cd9a 100644
--- a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt
@@ -36,6 +36,7 @@ import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.PlaybackException
import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.Tracks
+import com.preference.PowerPreference
import com.squareup.picasso.Picasso
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
@@ -43,7 +44,6 @@ import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import org.koin.java.KoinJavaComponent.inject
@@ -422,11 +422,24 @@ class PlayerService : Service() {
return allowed
}
+ private fun skipBackwardsAfterPause(): Int {
+ val deltaPref = PowerPreference.getDefaultFile().getString("auto_skip_backwards_on_pause")
+ val delta = deltaPref.toFloatOrNull()
+ return if (delta == null) 0 else (delta * 1000).toInt()
+ }
+
@SuppressLint("NewApi")
inner class PlayerEventListener : Player.Listener {
override fun onIsPlayingChanged(isPlaying: Boolean) {
super.onIsPlayingChanged(isPlaying)
mediaControlsManager.updateNotification(queue.current(), isPlaying)
+ if (!isPlaying) {
+ val delta = skipBackwardsAfterPause()
+ val (current, duration, _) = getProgress(true)
+ val position = if (current > delta) current - delta else 0
+ player.seekTo(position.toLong())
+ ProgressBus.send(position, duration, ((position.toFloat()) / duration / 10).toInt())
+ }
}
override fun onPlayWhenReadyChanged(playWhenReady: Boolean, reason: Int) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bd28840..4b4e30c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -34,6 +34,8 @@
You prefer shuffling album tracks
Play albums in order
You prefer playing albums in order
+ Skip backwards when pausing
+ Number of seconds to skip backwards when playing is paused
Other
Dark mode
Always on (dark mode)
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index ecb8e6b..78fc4b7 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -29,6 +29,18 @@
android:icon="@drawable/play"
android:key="play_order"
android:title="@string/settings_play_order" />
+
diff --git a/changes/changelog.d/134.feature b/changes/changelog.d/134.feature
new file mode 100644
index 0000000..f8957b6
--- /dev/null
+++ b/changes/changelog.d/134.feature
@@ -0,0 +1 @@
+Allow backward skip after pause by configurable number of seconds (contributed by hdasch)