使用过滤器的Android BLE设备扫描无效

Akh*_*mar 10 android bluetooth bluetooth-lowenergy android-bluetooth

我正在使用android BLE(蓝牙低功耗).我在使用
startLeScan(UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback)方法扫描BLE设备时遇到了麻烦,
startLeScan(BluetoothAdapter.LeScanCallback callback) 工作正常.
当我使用过滤器扫描特定的serviceUUID时,回调没有执行.我正在测试三星galaxy s6.
我想知道这个问题是特定于设备还是扫描函数中存在一些错误.

Chr*_*ris 9

我很确定它不是特定于设备的.首先,正如IshArt所提到的,你应该使用Android 5.0中的startScan.

startScan(List<ScanFilter> filters, ScanSettings settings, ScanCallback callback)
Run Code Online (Sandbox Code Playgroud)

根据我的经验,如果您使用MAC地址,但Scanfilters的实现工作正常,但其他过滤器设置参数存在问题:

ScanFilter filter = new ScanFilter.Builder().setDeviceAddress(deviceMacAddress).build();
filters.add(filter);
Run Code Online (Sandbox Code Playgroud)

如果这不是您的选择,您也可以实现自己的过滤器.如果将startScan()的过滤器列表保留为空,则忽略所有过滤并接收所有内容.然后在回调中,您可以编写自己的方法来检查结果是否符合您的要求.