【发布时间】:2022-05-13 09:25:12
【问题描述】:
我想从 2 个 BLE 设备接收信标。我知道他们的蓝牙地址。我创建了一个过滤器列表,如下所示:
private List<ScanFilter> filters = new ArrayList<ScanFilter>(); // Global in actual code
ScanFilter filter1 = new ScanFilter.Builder()
.setDeviceAddress(bluetoothAddress1).build();
ScanFilter filter2 = new ScanFilter.Builder()
.setDeviceAddress(bluetoothAddress2).build();
filters.add(filter1);
filters.add(filter2);
并调用它
mLEScanner.startScan(filters, settings, mScanCallback);
(设置和回调已在别处定义并正常工作)。
如果我打印过滤器列表,我可以看到我的两个过滤器,因此我知道它们在那里。如果我注释掉其中一个过滤器,我将仅正确接收来自另一个信标的数据包(无论我注释掉哪个过滤器都是如此)。但是,如果我不注释两个过滤器,那么我只会收到来自第二个设备的数据包。
为什么使用过滤器扫描只会给我来自一台设备的数据包,而不是来自多个设备的数据包?
【问题讨论】:
标签: android filter bluetooth bluetooth-lowenergy beacon