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)