蓝牙LE扫描过滤器MAC地址通常不适用于所有列表

时间:2018-07-24 12:22:08

标签: bluetooth bluetooth-lowenergy beacon altbeacon

我的应用扫描了蓝牙设备。我想按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);

0 个答案:

没有答案