Only do the ble scan if association isNotifyOnDeviceNearby

We do not need to blescan the nearby devices if they are
not isNotifyOnDeviceNearby.

Bug: 223323702
Test: Manually test on CTS verifier test.

Change-Id: Ibfc87b78ed38de17595f07e4c8e7b362c0848257
This commit is contained in:
Evan Chen
2022-04-12 14:46:57 -07:00
parent 10af76b851
commit dd0e2f32f0
2 changed files with 5 additions and 0 deletions

View File

@@ -671,6 +671,9 @@ public class CompanionDeviceManagerService extends SystemService {
association = AssociationInfo.builder(association)
.setNotifyOnDeviceNearby(active)
.build();
// Do not need to call {@link BleCompanionDeviceScanner#restartScan()} since it will
// trigger {@link BleCompanionDeviceScanner#restartScan(int, AssociationInfo)} when
// an application sets/unsets the mNotifyOnDeviceNearby flag.
mAssociationStore.updateAssociation(association);
// TODO(b/218615198): correctly handle the case when the device is currently present.

View File

@@ -194,6 +194,8 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
// Collect MAC addresses from all associations.
final Set<String> macAddresses = new HashSet<>();
for (AssociationInfo association : mAssociationStore.getAssociations()) {
if (!association.isNotifyOnDeviceNearby()) continue;
// Beware that BT stack does not consider low-case MAC addresses valid, while
// MacAddress.toString() return a low-case String.
final String macAddress = association.getDeviceMacAddressAsString();