[Android] Android Auto: force showing the speed action if it has already been shown for this media
Nicolas Pomepuy
git at videolan.org
Tue Feb 25 06:19:24 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Feb 20 11:36:42 2025 +0100| [21b6669b4129c2530b5bc3dff696f70e2d62dd6f] | committer: Duncan McNamara
Android Auto: force showing the speed action if it has already been shown for this media
It prevents the action from disappearing when reaching 1.0x which feels kind of weird/buggy
> https://code.videolan.org/videolan/vlc-android/commit/21b6669b4129c2530b5bc3dff696f70e2d62dd6f
---
.../vlc-android/src/org/videolan/vlc/PlaybackService.kt | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
index 6f5f0924f6..f620bf15ef 100644
--- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
+++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
@@ -264,6 +264,13 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
*/
lateinit var mediaBrowserCompat:MediaBrowserCompat
+ /**
+ * Once a media has shown the speed action once,
+ * continue showing it until the media changes even if the other conditions are not met
+ */
+ private var forceAutoShowSpeed:Pair<String?, Boolean> = Pair(null, false)
+
+
private val receiver = object : BroadcastReceiver() {
private var wasPlaying = false
override fun onReceive(context: Context, intent: Intent) {
@@ -1336,7 +1343,10 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
}
private fun addCustomSpeedActions(pscb: PlaybackStateCompat.Builder, showSpeedActions: Boolean = true) {
- if (speed != 1.0F || showSpeedActions) {
+ if (speed != 1.0F || showSpeedActions || ( currentMediaWrapper?.uri != null && forceAutoShowSpeed.first == currentMediaWrapper?.uri?.toString() && forceAutoShowSpeed.second)) {
+ currentMediaWrapper?.uri?.let {
+ forceAutoShowSpeed = Pair(it.toString(), true)
+ }
val speedIcons = hashMapOf(
0.50f to R.drawable.ic_auto_speed_0_50,
0.80f to R.drawable.ic_auto_speed_0_80,
@@ -1349,7 +1359,7 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
val speedResId = speedIcons[speedIcons.keys.minByOrNull { (speed - it).absoluteValue }]
?: R.drawable.ic_auto_speed
pscb.addCustomAction(CUSTOM_ACTION_SPEED, getString(R.string.playback_speed), speedResId)
- }
+ } else forceAutoShowSpeed = Pair(null, false)
}
fun notifyTrackChanged() {
More information about the Android
mailing list