我们正在通过
在许多MAC地址上过滤BLE扫描List<ScanFilter> filters = new ArrayList<ScanFilter>();
for(String addr : mBleAddrs) {
if(BluetoothAdapter.checkBluetoothAddress(addr)) {
Log.d(TAG, "VALID addr: " + addr);
ScanFilter deviceFilter = new ScanFilter.Builder()
.setDeviceAddress(addr)
.build();
filters.add(deviceFilter);
} else {
Log.d(TAG, "INVALID addr: " + addr);
}
}
mBluetoothLeScanner.startScan(filters, settingsBuilder.build(), mScanCallback);
在Android 7和8设备上运行此程序时,一切正常,但在具有Android版本9的Google Pixel XL上运行时,则完全不会产生任何结果。如果删除过滤条件,则可以在该电话上获得结果。有谁知道如何解决这个问题,或者某些手机根本不支持某些类型的过滤?
编辑请注意,我们正在打开屏幕在前台进行扫描!
答案 0 :(得分:0)
这可能是由于 https://punchthrough.com/android-ble-guide/ 中提到的随机地址:
<块引用>警告:实现蓝牙 4.2 的 LE 隐私功能的设备将定期随机化其公共 MAC 地址,因此通过扫描获得的 MAC 地址通常不应用作识别设备的长期手段——除非固件保证它没有轮换 MAC 地址,或者它是否有带外方式来传达当前的公共 MAC 地址是什么。