Skip to content
Snippets Groups Projects
Commit 49b76ff5 authored by Nicolas Pomepuy's avatar Nicolas Pomepuy Committed by Duncan McNamara
Browse files

Fix the system media controls not working anymore when the PlaybackService is killed

Fixes #2843
Fixes #2846
parent e708da8a
No related branches found
No related tags found
1 merge request!1676Backport 3.5.x: !1672, !1674
Pipeline #311633 passed with stage
in 3 minutes and 44 seconds
package org.videolan.vlc
import android.content.ComponentName
import android.content.Context
import android.support.v4.media.MediaBrowserCompat
import org.videolan.tools.SingletonHolder
import org.videolan.vlc.MediaBrowserInstance.init
object MediaBrowserInstance :
SingletonHolder<MediaBrowserCompat, Context>({ init(it.applicationContext) }) {
private lateinit var mediaBrowser: MediaBrowserCompat
fun init(context: Context): MediaBrowserCompat {
return MediaBrowserCompat(
context,
ComponentName(context, PlaybackService::class.java),
object : MediaBrowserCompat.ConnectionCallback() {
override fun onConnected() {}
override fun onConnectionSuspended() {}
override fun onConnectionFailed() {}
}, null
).apply {
connect()
}
}
}
\ No newline at end of file
......@@ -134,6 +134,12 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
private val mediaFactory = FactoryManager.getFactory(IMediaFactory.factoryId) as IMediaFactory
private lateinit var carConnectionHandler:CarConnectionHandler
/**
* Binds a [MediaBrowserCompat] to the service to allow receiving the
* [MediaSessionCompat.Callback] callbacks even if the service is killed
*/
lateinit var mediaBrowserCompat:MediaBrowserCompat
private val receiver = object : BroadcastReceiver() {
private var wasPlaying = false
override fun onReceive(context: Context, intent: Intent) {
......@@ -648,6 +654,7 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
headSetDetection.observe(this, Observer { detectHeadset(it) })
equalizer.observe(this, Observer { setEqualizer(it) })
serviceFlow.value = this
mediaBrowserCompat = MediaBrowserInstance.getInstance(this)
}
@OptIn(ObsoleteCoroutinesApi::class)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment