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
This commit is contained in:
Tim Peng
2021-09-11 05:56:08 +00:00
committed by tim peng
parent 1409022827
commit 5597cbd76b
2 changed files with 10 additions and 0 deletions

View File

@@ -106,6 +106,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
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 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
fillData();
mHiSyncId = BluetoothHearingAid.HI_SYNC_ID_INVALID;
initDrawableCache();
mUnpairing = false;
}
private void initDrawableCache() {
@@ -402,6 +404,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
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 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
void releaseLruCache() {
mDrawableCache.evictAll();
}
boolean getUnpairing() {
return mUnpairing;
}
}

View File

@@ -180,6 +180,9 @@ public class HearingAidDeviceManager {
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