From 695a264811f38964c9e7ea05ac5b7f6c3f4c9761 Mon Sep 17 00:00:00 2001 From: Kyunglyul Hyun Date: Tue, 26 Apr 2022 16:07:24 +0900 Subject: [PATCH] Fix AudioDeviceInventory#disconnectLeAudio This CL fixes disconnectLeAudio to disconnect devices properly and make it send becoming noisy intent when an LE audio device is disconnected. (It was removed in ag/17730892 but I don't understand the reason.) It also calls disconnectLeAudio for broadcast profiles. Bug: 230298077 Test: manually turning off BT to check if media is paused. Change-Id: Ifd74c244e19f5e7f92fdbd8f7d20cd99a054425a --- .../java/com/android/server/audio/AudioDeviceInventory.java | 6 ++++-- services/core/java/com/android/server/audio/BtHelper.java | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index e14527098a72e..dbe4fb8c87957 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -862,8 +862,8 @@ public class AudioDeviceInventory { } /*package*/ void disconnectLeAudio(int device) { - if (device != AudioSystem.DEVICE_OUT_BLE_HEADSET || - device != AudioSystem.DEVICE_OUT_BLE_BROADCAST) { + if (device != AudioSystem.DEVICE_OUT_BLE_HEADSET + && device != AudioSystem.DEVICE_OUT_BLE_BROADCAST) { Log.e(TAG, "disconnectLeAudio: Can't disconnect not LE Audio device " + device); return; } @@ -879,6 +879,8 @@ public class AudioDeviceInventory { new MediaMetrics.Item(mMetricsId + "disconnectLeAudio") .record(); if (toRemove.size() > 0) { + final int delay = checkSendBecomingNoisyIntentInt(device, 0, + AudioSystem.DEVICE_NONE); toRemove.stream().forEach(deviceAddress -> makeLeAudioDeviceUnavailable(deviceAddress, device) ); diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java index d10ed55281efe..0aa9a2bc4990b 100644 --- a/services/core/java/com/android/server/audio/BtHelper.java +++ b/services/core/java/com/android/server/audio/BtHelper.java @@ -462,6 +462,7 @@ public class BtHelper { mDeviceBroker.postBtProfileDisconnected(BluetoothProfile.HEADSET); mDeviceBroker.postBtProfileDisconnected(BluetoothProfile.HEARING_AID); mDeviceBroker.postBtProfileDisconnected(BluetoothProfile.LE_AUDIO); + mDeviceBroker.postBtProfileDisconnected(BluetoothProfile.LE_AUDIO_BROADCAST); } // @GuardedBy("AudioDeviceBroker.mSetModeLock") @@ -687,6 +688,7 @@ public class BtHelper { case BluetoothProfile.HEADSET: case BluetoothProfile.HEARING_AID: case BluetoothProfile.LE_AUDIO: + case BluetoothProfile.LE_AUDIO_BROADCAST: mDeviceBroker.postBtProfileDisconnected(profile); break;