[Android] Listen to playback changes in the PlaybackSpeedDialog

Nicolas Pomepuy git at videolan.org
Fri Feb 14 13:01:41 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Fri Feb 14 09:05:23 2025 +0100| [3b8d98352e2722ce83f4f438f032fba863c64a61] | committer: Duncan McNamara

Listen to playback changes in the PlaybackSpeedDialog

> https://code.videolan.org/videolan/vlc-android/commit/3b8d98352e2722ce83f4f438f032fba863c64a61
---

 .../vlc/gui/dialogs/PlaybackSpeedDialog.kt         | 30 ++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
index 48334cd508..fcc678af71 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
@@ -32,6 +32,8 @@ import android.widget.SeekBar
 import androidx.core.content.edit
 import androidx.lifecycle.lifecycleScope
 import kotlinx.coroutines.flow.onEach
+import org.videolan.libvlc.MediaPlayer
+import org.videolan.libvlc.interfaces.IMedia
 import org.videolan.medialibrary.interfaces.media.MediaWrapper
 import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL
 import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
@@ -51,7 +53,7 @@ import kotlin.math.ln
 import kotlin.math.pow
 
 
-class PlaybackSpeedDialog : VLCBottomSheetDialogFragment() {
+class PlaybackSpeedDialog : VLCBottomSheetDialogFragment(), PlaybackService.Callback {
 
     private lateinit var settings: SharedPreferences
     private val forVideo: Boolean
@@ -245,12 +247,25 @@ class PlaybackSpeedDialog : VLCBottomSheetDialogFragment() {
 
     }
 
+    override fun onDestroy() {
+        this.playbackService?.apply {
+            removeCallback(this at PlaybackSpeedDialog)
+        }
+        super.onDestroy()
+    }
+
     private fun onServiceChanged(service: PlaybackService?) {
         if (service != null) {
             playbackService = service
+            playbackService!!.addCallback(this)
             setRateProgress()
-        } else
+        } else {
+            this.playbackService?.apply {
+                removeCallback(this at PlaybackSpeedDialog)
+            }
             playbackService = null
+            dismiss()
+        }
     }
 
     override fun getDefaultState(): Int {
@@ -263,6 +278,17 @@ class PlaybackSpeedDialog : VLCBottomSheetDialogFragment() {
         return true
     }
 
+    override fun update() {
+        if (playbackService?.playlistManager?.hasCurrentMedia() == true)
+            setRateProgress()
+        else
+            dismiss()
+    }
+
+    override fun onMediaEvent(event: IMedia.Event) { }
+
+    override fun onMediaPlayerEvent(event: MediaPlayer.Event) { }
+
     companion object {
 
         const val TAG = "VLC/PlaybackSpeedDialog"



More information about the Android mailing list