HA still appears in Media device list even though it has been unpaired.
-Add mUnpairing to mark the device triggers removeBond()
-For HA, once it calls removeBond(), two HA would be unpaired. It causes the incorrect state if we do main/sub devices switching.
Bug: 198124571
Test: manual test
Change-Id: I4ed5db2bd01f4b4e8f246ed3e8f74e24149571f9
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index fe92e26..d919af5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -106,6 +106,7 @@
private boolean mIsA2dpProfileConnectedFail = false;
private boolean mIsHeadsetProfileConnectedFail = false;
private boolean mIsHearingAidProfileConnectedFail = false;
+ private boolean mUnpairing;
// Group second device for Hearing Aid
private CachedBluetoothDevice mSubDevice;
@VisibleForTesting
@@ -142,6 +143,7 @@
fillData();
mHiSyncId = BluetoothHearingAid.HI_SYNC_ID_INVALID;
initDrawableCache();
+ mUnpairing = false;
}
private void initDrawableCache() {
@@ -402,6 +404,7 @@
if (state != BluetoothDevice.BOND_NONE) {
final BluetoothDevice dev = mDevice;
if (dev != null) {
+ mUnpairing = true;
final boolean successful = dev.removeBond();
if (successful) {
releaseLruCache();
@@ -1243,4 +1246,8 @@
void releaseLruCache() {
mDrawableCache.evictAll();
}
+
+ boolean getUnpairing() {
+ return mUnpairing;
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
index 20ece69..818f5ca 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
@@ -180,6 +180,9 @@
break;
case BluetoothProfile.STATE_DISCONNECTED:
mainDevice = findMainDevice(cachedDevice);
+ if (cachedDevice.getUnpairing()) {
+ return true;
+ }
if (mainDevice != null) {
// When main device exists, receiving sub device disconnection
// To update main device UI