diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt index d04ec40c9f28e..360f86548e13e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaData.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaData.kt @@ -212,5 +212,8 @@ data class MediaDeviceData val name: CharSequence?, /** Optional intent to override the default output switcher for this control */ - val intent: PendingIntent? = null + val intent: PendingIntent? = null, + + /** Unique id for this device */ + val id: String? = null ) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt index 11ee6578e27d9..8558859638d5b 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt @@ -155,7 +155,8 @@ class MediaDeviceManager @Inject constructor( private var playbackType = PLAYBACK_TYPE_UNKNOWN private var current: MediaDeviceData? = null set(value) { - if (!started || value != field) { + val hasSameId = value?.id != null && value.id == field?.id + if (!started || (!hasSameId && value != field)) { field = value fgExecutor.execute { processDevice(key, oldKey, value) @@ -263,7 +264,7 @@ class MediaDeviceManager @Inject constructor( // If we have a controller but get a null route, then don't trust the device val enabled = device != null && (controller == null || route != null) val name = route?.name?.toString() ?: device?.name - current = MediaDeviceData(enabled, device?.iconWithoutBackground, name) + current = MediaDeviceData(enabled, device?.iconWithoutBackground, name, id = device?.id) } } }