Loading packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java +10 −19 Original line number Diff line number Diff line Loading @@ -188,12 +188,7 @@ public class CompanionDeviceDiscoveryService extends Service { filter(allFilters, BluetoothLeDeviceFilter.class); final List<WifiDeviceFilter> wifiFilters = filter(allFilters, WifiDeviceFilter.class); // No need to startDiscovery if the device is already bound or connected for // singleDevice dialog. if (checkBoundDevicesIfNeeded(request, btFilters)) { stopSelf(); return; } checkBoundDevicesIfNeeded(request, btFilters); // If no filters are specified: look for everything. final boolean forceStartScanningAll = isEmpty(allFilters); Loading Loading @@ -253,37 +248,33 @@ public class CompanionDeviceDiscoveryService extends Service { stopSelf(); } private boolean checkBoundDevicesIfNeeded(@NonNull AssociationRequest request, private void checkBoundDevicesIfNeeded(@NonNull AssociationRequest request, @NonNull List<BluetoothDeviceFilter> btFilters) { // If filtering to get single device by mac address, also search in the set of already // bonded devices to allow linking those directly if (btFilters.isEmpty() || !request.isSingleDevice()) return false; if (btFilters.isEmpty() || !request.isSingleDevice()) return; final BluetoothDeviceFilter singleMacAddressFilter = find(btFilters, filter -> !TextUtils.isEmpty(filter.getAddress())); if (singleMacAddressFilter == null) return false; if (singleMacAddressFilter == null) return; return findAndReportMatches(mBtAdapter.getBondedDevices(), btFilters) || findAndReportMatches(mBtManager.getConnectedDevices( BluetoothProfile.GATT), btFilters) || findAndReportMatches(mBtManager.getConnectedDevices( BluetoothProfile.GATT_SERVER), btFilters); findAndReportMatches(mBtAdapter.getBondedDevices(), btFilters); findAndReportMatches(mBtManager.getConnectedDevices(BluetoothProfile.GATT), btFilters); findAndReportMatches( mBtManager.getConnectedDevices(BluetoothProfile.GATT_SERVER), btFilters); } private boolean findAndReportMatches(@Nullable Collection<BluetoothDevice> devices, private void findAndReportMatches(@Nullable Collection<BluetoothDevice> devices, @NonNull List<BluetoothDeviceFilter> filters) { if (devices == null) return false; if (devices == null) return; for (BluetoothDevice device : devices) { final DeviceFilterPair<BluetoothDevice> match = findMatch(device, filters); if (match != null) { onDeviceFound(match); return true; } } return false; } private BluetoothBroadcastReceiver startBtScanningIfNeeded( Loading Loading
packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java +10 −19 Original line number Diff line number Diff line Loading @@ -188,12 +188,7 @@ public class CompanionDeviceDiscoveryService extends Service { filter(allFilters, BluetoothLeDeviceFilter.class); final List<WifiDeviceFilter> wifiFilters = filter(allFilters, WifiDeviceFilter.class); // No need to startDiscovery if the device is already bound or connected for // singleDevice dialog. if (checkBoundDevicesIfNeeded(request, btFilters)) { stopSelf(); return; } checkBoundDevicesIfNeeded(request, btFilters); // If no filters are specified: look for everything. final boolean forceStartScanningAll = isEmpty(allFilters); Loading Loading @@ -253,37 +248,33 @@ public class CompanionDeviceDiscoveryService extends Service { stopSelf(); } private boolean checkBoundDevicesIfNeeded(@NonNull AssociationRequest request, private void checkBoundDevicesIfNeeded(@NonNull AssociationRequest request, @NonNull List<BluetoothDeviceFilter> btFilters) { // If filtering to get single device by mac address, also search in the set of already // bonded devices to allow linking those directly if (btFilters.isEmpty() || !request.isSingleDevice()) return false; if (btFilters.isEmpty() || !request.isSingleDevice()) return; final BluetoothDeviceFilter singleMacAddressFilter = find(btFilters, filter -> !TextUtils.isEmpty(filter.getAddress())); if (singleMacAddressFilter == null) return false; if (singleMacAddressFilter == null) return; return findAndReportMatches(mBtAdapter.getBondedDevices(), btFilters) || findAndReportMatches(mBtManager.getConnectedDevices( BluetoothProfile.GATT), btFilters) || findAndReportMatches(mBtManager.getConnectedDevices( BluetoothProfile.GATT_SERVER), btFilters); findAndReportMatches(mBtAdapter.getBondedDevices(), btFilters); findAndReportMatches(mBtManager.getConnectedDevices(BluetoothProfile.GATT), btFilters); findAndReportMatches( mBtManager.getConnectedDevices(BluetoothProfile.GATT_SERVER), btFilters); } private boolean findAndReportMatches(@Nullable Collection<BluetoothDevice> devices, private void findAndReportMatches(@Nullable Collection<BluetoothDevice> devices, @NonNull List<BluetoothDeviceFilter> filters) { if (devices == null) return false; if (devices == null) return; for (BluetoothDevice device : devices) { final DeviceFilterPair<BluetoothDevice> match = findMatch(device, filters); if (match != null) { onDeviceFound(match); return true; } } return false; } private BluetoothBroadcastReceiver startBtScanningIfNeeded( Loading