В вашем сканере BLE вы получаете ScanResult
, содержащий экземпляр BluetoothDevice
, то есть сканированное устройство. По крайней мере, вы должны быть в состоянии прочитать BLE-адрес устройства, то есть его аппаратный адрес. Используйте метод:
BluetoothDevice.getAddress();
Этот аппаратный адрес должен иметь предопределенный диапазон, например, начиная с «A3: B4», который включает фильтрацию scanRecords. Узнайте у производителя устройства, как генерируются эти аппаратные адреса.
Кроме того, если вы знаете идентификатор производителя поддерживаемых вами устройств, вы можете установить фильтр на основе данных производителя:
ScanFilter scanFilter = new ScanFilter.Builder()
.setManufacturerData(manufacturerId, manufacturerData)
.build();
Обратите внимание, что первые два байта массива ManufacturerData - это идентификаторId.
РЕДАКТИРОВАТЬ: Данные ManufacturerData являются частью массива байтов, возвращаемого
scanResult.getScanRecord().getBytes()
scanResult
передается в ScanCallback
вы дали BluetoothLESCanner.startScan(...)