Merge branch 'backup-on-pause' into 'develop'
Allow automatic backward skip of a configurable number of seconds on pause (#134). Closes #134 See merge request funkwhale/funkwhale-android!273
This commit is contained in:
commit
b188005be3
|
@ -36,6 +36,7 @@ import com.google.android.exoplayer2.ExoPlayer
|
||||||
import com.google.android.exoplayer2.PlaybackException
|
import com.google.android.exoplayer2.PlaybackException
|
||||||
import com.google.android.exoplayer2.Player
|
import com.google.android.exoplayer2.Player
|
||||||
import com.google.android.exoplayer2.Tracks
|
import com.google.android.exoplayer2.Tracks
|
||||||
|
import com.preference.PowerPreference
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
|
@ -43,7 +44,6 @@ import kotlinx.coroutines.Dispatchers.Main
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.collect
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.koin.java.KoinJavaComponent.inject
|
import org.koin.java.KoinJavaComponent.inject
|
||||||
|
@ -422,11 +422,24 @@ class PlayerService : Service() {
|
||||||
return allowed
|
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")
|
@SuppressLint("NewApi")
|
||||||
inner class PlayerEventListener : Player.Listener {
|
inner class PlayerEventListener : Player.Listener {
|
||||||
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
||||||
super.onIsPlayingChanged(isPlaying)
|
super.onIsPlayingChanged(isPlaying)
|
||||||
mediaControlsManager.updateNotification(queue.current(), 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) {
|
override fun onPlayWhenReadyChanged(playWhenReady: Boolean, reason: Int) {
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
<string name="settings_play_order_shuffle_summary">You prefer shuffling album tracks</string>
|
<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">Play albums in order</string>
|
||||||
<string name="settings_play_order_in_order_summary">You prefer playing 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_other">Other</string>
|
||||||
<string name="settings_night_mode">Dark mode</string>
|
<string name="settings_night_mode">Dark mode</string>
|
||||||
<string name="settings_night_mode_on">Always on (dark mode)</string>
|
<string name="settings_night_mode_on">Always on (dark mode)</string>
|
||||||
|
|
|
@ -29,6 +29,18 @@
|
||||||
android:icon="@drawable/play"
|
android:icon="@drawable/play"
|
||||||
android:key="play_order"
|
android:key="play_order"
|
||||||
android:title="@string/settings_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>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Allow backward skip after pause by configurable number of seconds (contributed by hdasch)
|
Loading…
Reference in New Issue