如何正确扫描BLE直接广告

时间:2018-07-02 12:18:41

标签: android bluetooth-lowenergy

我无法找到BLE 直接广告的实际扫描在Android上的工作方式。我唯一发现的是here告诉您应将要扫描的设备MAC地址添加到ScanFilter

List<ScanFilter> mFilters = new ArrayList<ScanFilter>();
ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
mFilters.add(new ScanFilter.Builder().setDeviceAddress(new String("00:11:22:33:44:55")).build());

然后在此处添加此过滤器

le_scanner.startScan(mFilters, settings, le_scan_callback);

这在我的Android Lollipop上完美运行-我可以在创建bond之前和之后找到设备。现在,当我在Android Nougat和Oreo上尝试此操作时,它只能在创建绑定之前起作用-创建绑定并开始直接广告le_scan_callback时,永远不会调用。是的,我确实请求了运行时权限:ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION,并启用了位置服务。我在扫描中做错什么了吗?

我还使用PlayStore中的应用程序测试了对BLE模块的扫描:BLE Reader和nRF Connect,行为是相同的-在Lollipop上绑定之前和之后都有效,但是在Nougat和Oreo上绑定之后却没有效果。

0 个答案:

没有答案