Allow automatic backward skip of a configurable number of seconds on pause (#134).

This commit is contained in:
Hugh Daschbach 2022-12-20 09:13:36 +00:00 committed by Ryan Harg
parent 2d272d13c9
commit ec6187aeac
4 changed files with 29 additions and 1 deletions

View File

@ -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) {

View File

@ -34,6 +34,8 @@
<string name="settings_play_order_shuffle_summary">You prefer shuffling album tracks</string>
<string name="settings_play_order_in_order">Play albums in order</string>
<string name="settings_play_order_in_order_summary">You prefer playing albums in order</string>
<string name="settings_auto_skip_backwards_on_pause">Skip backwards when pausing</string>
<string name="settings_auto_skip_backwards_on_pause_summary">Number of seconds to skip backwards when playing is paused</string>
<string name="settings_other">Other</string>
<string name="settings_night_mode">Dark mode</string>
<string name="settings_night_mode_on">Always on (dark mode)</string>

View File

@ -29,6 +29,18 @@
android:icon="@drawable/play"
android:key="play_order"
android:title="@string/settings_play_order" />
<EditTextPreference
android:defaultValue="0"
android:dialogTitle="@string/settings_auto_skip_backwards_on_pause_summary"
android:icon="@drawable/pause"
android:inputType="number"
android:key="auto_skip_backwards_on_pause"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/settings_auto_skip_backwards_on_pause_summary"
android:title="@string/settings_auto_skip_backwards_on_pause"
android:visibility="visible"
app:useSimpleSummaryProvider="true"/>
</PreferenceCategory>

View File

@ -0,0 +1 @@
Allow backward skip after pause by configurable number of seconds (contributed by hdasch)