Closed yaoxin2017 closed 6 years ago
@yaoxin2017 这个需要看你的UUID匹配的具体是哪个值,如果该过滤条件不能满足那么需要自定义一个过滤规则。
自定义也无法过滤!因为当搜索到蓝牙设备时的回调中bluetoothLeDevice.getDevice().getUuids()返回一直是null,也即是在回调方法内无法获取到蓝牙的UUID。
@yaoxin2017 我的意思是你要找到具体匹配的规则,我那个规则针对的UUID是设备本身的UUID,按照你的问题描述你匹配的UUID应该是要服务UUID,这个UUID是否在连接前就能获取,如果可以获取具体是放到什么地方,据我所知一般情况服务UUID是放到广播包中,可以通过广播包解析获得,而如果不能在连接前获取肯定就无法实现这个需求。
初始化之后,调用以下代码查找指定服务UUID的设备,始终查不到(但是按照设备名称可以查到): ViseBle.getInstance().startLeScan(new UuidFilterScanCallback(new IScanCallback() { @Override public void onDeviceFound(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
我看了源码是这样过滤的: public BluetoothLeDeviceStore onFilter(BluetoothLeDevice bluetoothLeDevice) { if (bluetoothLeDevice != null && bluetoothLeDevice.getDevice() != null && bluetoothLeDevice.getDevice().getUuids() != null && bluetoothLeDevice.getDevice().getUuids().length > 0) { for (ParcelUuid parcelUuid : bluetoothLeDevice.getDevice().getUuids()) { if (uuid != null && uuid == parcelUuid.getUuid()) { bluetoothLeDeviceStore.addDevice(bluetoothLeDevice); } } } return bluetoothLeDeviceStore; } 但是bluetoothLeDevice.getDevice().getUuids()返回一直是null,貌似在服务连接前该值一直是null!