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

Bluetooth 蓝牙LE扫描过滤器MAC地址通常不适用于所有列表,bluetooth,bluetooth-lowenergy,beacon,altbeacon,Bluetooth,Bluetooth Lowenergy,Beacon,Altbeacon,我的应用程序扫描蓝牙设备。我想通过MAC地址列表过滤扫描。三星S7安卓8.0始终运行良好 但我对其他设备有问题,比如小米安卓8和荣誉安卓7。 当我开始扫描时,我通常无法在过滤器中列出所有蓝牙设备。 停止/启动扫描:有时我只得到一个MAC地址。 停止/开始扫描:然后我得到所有。 停止/开始扫描:然后我只得到一个和第三个 请问问题出在哪里? 如果写入筛选器失败,我希望在调用startscan时出错。 或者是否可以冲洗或重置过滤器 BluetoothManager manager = (Bluetoo

我的应用程序扫描蓝牙设备。我想通过MAC地址列表过滤扫描。三星S7安卓8.0始终运行良好

但我对其他设备有问题,比如小米安卓8和荣誉安卓7。 当我开始扫描时,我通常无法在过滤器中列出所有蓝牙设备。 停止/启动扫描:有时我只得到一个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);
BluetoothManager=(BluetoothManager)getSystemService(蓝牙_服务);
mBluetoothLeScanner=manager.getAdapter().getBluetoothLeScanner();
ArrayList过滤器=新的ArrayList();
ScanSettings=new ScanSettings.Builder()
.setScanMode(扫描设置.SCAN\u模式\u低延迟)
.build();
字符串[]过滤器列表={
“AA:AA:AA:AA:AA:AA:AA”,
“BB:BB:BB:BB:BB:BB:BB”,
“抄送:抄送:抄送:抄送:,
};
for(int i=0;i
你能告诉我如何停止和重新启动扫描吗?它在服务内部,开始是我在上一篇文章中所说的:mbluetotherlescanner.startScan(过滤器、设置、mLeScanCallback);和stop,也在服务内部:mBluetoothLeScanner.stopScan(mLeScanCallback);为了完成我的上一篇文章,start在服务的onStartCommand()内,stop在onDestroy()内。很难说不在上下文中看到代码,但我担心的是,
.stopScan
不是一直被调用,就是在调用下一个
startScan
之前一直被调用。