playback: fix widget not resetting on service end

This commit is contained in:
Alexander Capehart 2024-06-08 21:44:48 -06:00
parent 111cb9688f
commit b0703b4d0e
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47

View file

@ -49,13 +49,15 @@ constructor(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
private val playbackManager: PlaybackStateManager, private val playbackManager: PlaybackStateManager,
private val playbackSettings: PlaybackSettings, private val playbackSettings: PlaybackSettings,
private val systemReceiver: SystemPlaybackReceiver private val widgetComponent: WidgetComponent
) : PlaybackStateManager.Listener, PlaybackSettings.Listener { ) : PlaybackStateManager.Listener, PlaybackSettings.Listener {
interface Callback { interface Callback {
fun onCustomLayoutChanged(layout: List<CommandButton>) fun onCustomLayoutChanged(layout: List<CommandButton>)
} }
private val systemReceiver =
SystemPlaybackReceiver(playbackManager, playbackSettings, widgetComponent)
private var callback: Callback? = null private var callback: Callback? = null
fun attach(callback: Callback) { fun attach(callback: Callback) {
@ -71,6 +73,7 @@ constructor(
playbackManager.removeListener(this) playbackManager.removeListener(this)
playbackSettings.unregisterListener(this) playbackSettings.unregisterListener(this)
context.unregisterReceiver(systemReceiver) context.unregisterReceiver(systemReceiver)
widgetComponent.release()
} }
fun withCommands(commands: SessionCommands) = fun withCommands(commands: SessionCommands) =
@ -180,12 +183,10 @@ object PlaybackActions {
* A [BroadcastReceiver] for receiving playback-specific [Intent]s from the system that require an * A [BroadcastReceiver] for receiving playback-specific [Intent]s from the system that require an
* active [IntentFilter] to be registered. * active [IntentFilter] to be registered.
*/ */
class SystemPlaybackReceiver class SystemPlaybackReceiver(
@Inject private val playbackManager: PlaybackStateManager,
constructor( private val playbackSettings: PlaybackSettings,
val playbackManager: PlaybackStateManager, private val widgetComponent: WidgetComponent
val playbackSettings: PlaybackSettings,
val widgetComponent: WidgetComponent
) : BroadcastReceiver() { ) : BroadcastReceiver() {
private var initialHeadsetPlugEventHandled = false private var initialHeadsetPlugEventHandled = false