diff options
Diffstat (limited to 'packages/CompanionDeviceManager')
-rw-r--r-- | packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java index 2a4ab0f550e5..3b29a6cd7b6c 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java @@ -20,6 +20,8 @@ import static android.companion.BluetoothDeviceFilterUtils.getDeviceDisplayNameI import static android.companion.BluetoothDeviceFilterUtils.getDeviceMacAddress; import static com.android.internal.util.ArrayUtils.isEmpty; +import static com.android.internal.util.CollectionUtils.emptyIfNull; +import static com.android.internal.util.CollectionUtils.size; import android.annotation.NonNull; import android.annotation.Nullable; @@ -154,6 +156,25 @@ public class DeviceDiscoveryService extends Service { onReadyToShowUI(); } + // If filtering to get single device by mac address, also search in the set of already + // bonded devices to allow linking those directly + String singleMacAddressFilter = null; + if (mRequest.isSingleDevice()) { + int numFilters = size(mBluetoothFilters); + for (int i = 0; i < numFilters; i++) { + BluetoothDeviceFilter filter = mBluetoothFilters.get(i); + if (!TextUtils.isEmpty(filter.getAddress())) { + singleMacAddressFilter = filter.getAddress(); + break; + } + } + } + if (singleMacAddressFilter != null) { + for (BluetoothDevice dev : emptyIfNull(mBluetoothAdapter.getBondedDevices())) { + onDeviceFound(DeviceFilterPair.findMatch(dev, mBluetoothFilters)); + } + } + if (shouldScan(mBluetoothFilters)) { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(BluetoothDevice.ACTION_FOUND); @@ -211,6 +232,8 @@ public class DeviceDiscoveryService extends Service { } private void onDeviceFound(@Nullable DeviceFilterPair device) { + if (device == null) return; + if (mDevicesFound.contains(device)) { return; } @@ -444,12 +467,9 @@ public class DeviceDiscoveryService extends Service { } for (int i = 0; i < scanResults.size(); i++) { - DeviceFilterPair<android.net.wifi.ScanResult> deviceFilterPair = - DeviceFilterPair.findMatch(scanResults.get(i), mWifiFilters); - if (deviceFilterPair != null) onDeviceFound(deviceFilterPair); + onDeviceFound(DeviceFilterPair.findMatch(scanResults.get(i), mWifiFilters)); } } - } } } |