我的应用扫描了蓝牙设备。我想按MAC地址列表过滤扫描。使用Samsung S7 Android 8.0可以正常运行。
但是我对小米Android 8和Honor Android 7等其他设备有疑问。 当我开始扫描时,通常我不可能在过滤器中列出所有的蓝牙设备MAC。 停止/开始扫描:有时我只得到一个MAC地址。 停止/开始扫描:然后我就明白了。 停止/开始扫描:然后我只得到第一个和第三个...
请问问题出在哪里? 如果写入过滤器发生故障,我在调用startscan时会出现错误。 还是可以冲洗或重置过滤器?
BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
mBluetoothLeScanner = manager.getAdapter().getBluetoothLeScanner();
ArrayList<ScanFilter> filters = new ArrayList<ScanFilter>();
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
String[] filterlist = {
"AA:AA:AA:AA:AA:AA",
"BB:BB:BB:BB:BB:BB",
"CC:CC:CC:CC:CC:CC",
};
for (int i=0; i< filterlist.length ; i++) {
ScanFilter filter = new ScanFilter.Builder().setDeviceAddress(filterlist[i]).build();
filters.add(filter);
Log.v("Filter: "," "+ filters.get(i).getDeviceAddress());
}
Log.d(TAG, "filters" + filters );
mBluetoothLeScanner.startScan(filters, settings, mLeScanCallback);