From dd0e2f32f01013a62b0679ac7007ec8c27eab62d Mon Sep 17 00:00:00 2001 From: Evan Chen Date: Tue, 12 Apr 2022 14:46:57 -0700 Subject: [PATCH] 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 --- .../server/companion/CompanionDeviceManagerService.java | 3 +++ .../server/companion/presence/BleCompanionDeviceScanner.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index ac0944be9739c..b4c107c1a2c1a 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -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. diff --git a/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java b/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java index 33301b1806193..ad09f7cd3dde6 100644 --- a/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java +++ b/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java @@ -194,6 +194,8 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { // Collect MAC addresses from all associations. final Set 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();