BluetoothCentral { public void scanForPeripheralsUsingFilters(@NotNull List<ScanFilter> filters) { Objects.requireNonNull(filters, "no filters supplied"); if (filters.isEmpty()) { throw new IllegalArgumentException("at least one scan filter must be supplied"); } startScan(filters, scanSettings, defaultScanCallback); } BluetoothCentral(@NotNull Context context, @NotNull BluetoothCentralCallback bluetoothCentralCallback, @NotNull Handler handler); void close(); boolean setScanMode(int scanMode); void scanForPeripheralsWithServices(@NotNull final UUID[] serviceUUIDs); void scanForPeripheralsWithNames(@NotNull final String[] peripheralNames); void scanForPeripheralsWithAddresses(@NotNull final String[] peripheralAddresses); void scanForPeripheralsUsingFilters(@NotNull List<ScanFilter> filters); void scanForPeripherals(); void stopScan(); boolean isScanning(); void connectPeripheral(@NotNull BluetoothPeripheral peripheral, @NotNull BluetoothPeripheralCallback peripheralCallback); void autoConnectPeripheral(@NotNull BluetoothPeripheral peripheral, @NotNull BluetoothPeripheralCallback peripheralCallback); void cancelConnection(@NotNull final BluetoothPeripheral peripheral); void autoConnectPeripheralsBatch(@NotNull Map<BluetoothPeripheral, BluetoothPeripheralCallback> batch); @NotNull BluetoothPeripheral getPeripheral(@NotNull String peripheralAddress); @NotNull List<BluetoothPeripheral> getConnectedPeripherals(); boolean isBluetoothEnabled(); boolean setPinCodeForPeripheral(@NotNull String peripheralAddress, @NotNull String pin); boolean removeBond(@NotNull String peripheralAddress); void startPairingPopupHack(); static final int SCAN_FAILED_ALREADY_STARTED; static final int SCAN_FAILED_APPLICATION_REGISTRATION_FAILED; static final int SCAN_FAILED_INTERNAL_ERROR; static final int SCAN_FAILED_FEATURE_UNSUPPORTED; static final int SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES; static final int SCAN_FAILED_SCANNING_TOO_FREQUENTLY; }
@Test (expected = NullPointerException.class) public void scanForPeripheralsUsingFiltersNullTest() { application.grantPermissions(Manifest.permission.ACCESS_COARSE_LOCATION); central.scanForPeripheralsUsingFilters(null); }
@Test (expected = IllegalArgumentException.class) public void scanForPeripheralsUsingFiltersEmptyTest() { application.grantPermissions(Manifest.permission.ACCESS_COARSE_LOCATION); central.scanForPeripheralsUsingFilters(new ArrayList<ScanFilter>()); }
@Test public void scanForPeripheralsUsingFiltersTest() throws Exception { application.grantPermissions(Manifest.permission.ACCESS_COARSE_LOCATION); String myAddress = "12:23:34:98:76:54"; List<ScanFilter> myfilters = new ArrayList<>(); ScanFilter filter = new ScanFilter.Builder() .setDeviceAddress(myAddress) .build(); myfilters.add(filter); central.scanForPeripheralsUsingFilters(myfilters); ArgumentCaptor<List> scanFiltersCaptor = ArgumentCaptor.forClass(List.class); ArgumentCaptor<ScanSettings> scanSettingsCaptor = ArgumentCaptor.forClass(ScanSettings.class); ArgumentCaptor<ScanCallback> scanCallbackCaptor = ArgumentCaptor.forClass(ScanCallback.class); verify(scanner).startScan(scanFiltersCaptor.capture(), scanSettingsCaptor.capture(), scanCallbackCaptor.capture()); List<ScanFilter> filters = scanFiltersCaptor.getValue(); assertEquals(1, filters.size()); ScanFilter addressFilter = filters.get(0); String address = addressFilter.getDeviceAddress(); assertEquals(myAddress, address); }