From 4972c58783865db20209ec452e1c9eb9f4f32556 Mon Sep 17 00:00:00 2001 From: Angela Wang Date: Wed, 7 Feb 2024 10:15:36 +0000 Subject: [PATCH] New hearing device pairing page: ignore bonded device The device might still in advertising mode even if it's bonded. We can just ignore this kind of devices in the scanning result. Bug: 307890347 Test: manual test Change-Id: I782cc62edd4fec779f5f55444425b32a77f85e5e --- .../HearingDevicePairingFragment.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/accessibility/HearingDevicePairingFragment.java b/src/com/android/settings/accessibility/HearingDevicePairingFragment.java index e9ea71a0330..0b762f3b589 100644 --- a/src/com/android/settings/accessibility/HearingDevicePairingFragment.java +++ b/src/com/android/settings/accessibility/HearingDevicePairingFragment.java @@ -192,7 +192,7 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im public void onDeviceBondStateChanged(@NonNull CachedBluetoothDevice cachedDevice, int bondState) { if (DEBUG) { - Log.d(TAG, "onDeviceBondStateChanged: " + cachedDevice.getName() + ", state = " + Log.d(TAG, "onDeviceBondStateChanged: " + cachedDevice.getDevice() + ", state = " + bondState); } if (bondState == BluetoothDevice.BOND_BONDED) { @@ -276,13 +276,13 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im } mDevicePreferenceMap.put(cachedDevice, preference); if (DEBUG) { - Log.d(TAG, "Add device. device: " + cachedDevice); + Log.d(TAG, "Add device. device: " + cachedDevice.getDevice()); } } void removeDevice(CachedBluetoothDevice cachedDevice) { if (DEBUG) { - Log.d(TAG, "removeDevice: " + cachedDevice); + Log.d(TAG, "removeDevice: " + cachedDevice.getDevice()); } BluetoothDevicePreference preference = mDevicePreferenceMap.remove(cachedDevice); if (mAvailableHearingDeviceGroup != null && preference != null) { @@ -329,10 +329,15 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(device); if (cachedDevice == null) { cachedDevice = mCachedDeviceManager.addDevice(device); + } else if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED) { + if (DEBUG) { + Log.d(TAG, "Skip this device, already bonded: " + cachedDevice.getDevice()); + } + return; } if (cachedDevice.getHearingAidInfo() == null) { if (DEBUG) { - Log.d(TAG, "Set hearing aid info on device: " + cachedDevice); + Log.d(TAG, "Set hearing aid info on device: " + cachedDevice.getDevice()); } cachedDevice.setHearingAidInfo(new HearingAidInfo.Builder().build()); } @@ -450,7 +455,7 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im void discoverServices(CachedBluetoothDevice cachedDevice) { if (DEBUG) { - Log.d(TAG, "connectGattToCheckCompatibility, device: " + cachedDevice); + Log.d(TAG, "connectGattToCheckCompatibility, device: " + cachedDevice.getDevice()); } BluetoothGatt gatt = cachedDevice.getDevice().connectGatt(getContext(), false, new BluetoothGattCallback() { @@ -460,7 +465,7 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im super.onConnectionStateChange(gatt, status, newState); if (DEBUG) { Log.d(TAG, "onConnectionStateChange, status: " + status + ", newState: " - + newState + ", device: " + cachedDevice); + + newState + ", device: " + cachedDevice.getDevice()); } if (status == GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) { @@ -476,13 +481,14 @@ public class HearingDevicePairingFragment extends RestrictedDashboardFragment im super.onServicesDiscovered(gatt, status); if (DEBUG) { Log.d(TAG, "onServicesDiscovered, status: " + status + ", device: " - + cachedDevice); + + cachedDevice.getDevice()); } if (status == GATT_SUCCESS) { if (gatt.getService(BluetoothUuid.HEARING_AID.getUuid()) != null || gatt.getService(BluetoothUuid.HAS.getUuid()) != null) { if (DEBUG) { - Log.d(TAG, "compatible with Android, device: " + cachedDevice); + Log.d(TAG, "compatible with Android, device: " + + cachedDevice.getDevice()); } addDevice(cachedDevice); }