这几天在编码时候想进行蓝牙设备的筛选再进行显示,用到的是uni提供的蓝牙板块模板代码,再调试中发现uni.startstartBluetoothDevicesDiscovery中的services设置之后没办法进行筛选,最后发现是源代码的坑,已解决。
以上是函数的说明,使用官方的源码一开始搜索的蓝牙设备自动显示UUID,如图所示
然后我就将我想要的设备的UUID添加进services数组中,
uni.startBluetoothDevicesDiscovery({
services:['1F2A2039-5E5B-7AB1-DF4E-31002DFB728B'],
success: e => {
console.log('开始搜索蓝牙设备:' + e.errMsg);
this.searchLoad = true;
this.$set(this.disabled, 1, true);
this.$set(this.disabled, 2, false);
this.$set(this.disabled, 3, false);
this.onBluetoothDeviceFound();
this.showMaskType = 'device';
this.maskShow = true;
},
发现蓝牙一个设备都不能发现了,后来我打印了发现设备数组的数据,发现带代码的坑:源代码中显示再屏幕上的UUID并不是UUID!他只是deviceId。所以不能进行筛选,我填入正确的UUID之后,就可以了。
以上为设备的信息数据。改代码:
services:['0000FFF0-0000-1000-8000-00805F9B34FB'],
最后筛选成功了,并且改了UUID的显示错误,改成deviceId。
最后,怎么获取设备的UUID等数据呢?
getBluetoothDevices() {
uni.getBluetoothDevices({
success: res => {
this.newDeviceLoad = false;
console.log('获取蓝牙设备成功:' + res.errMsg);
console.log(JSON.stringify(res))
/* if(res.devices.name.contains("heart") === true){ */
this.list = res.devices;
/* } */
},
fail: e => {
console.log('获取蓝牙设备错误,错误码:' + e.errCode);
if (e.errCode !== 0) {
initTypes(e.errCode);
}
}
});
},
console.log(JSON.stringify(res))这行代码就能打印设备的信息,根据显示的UUID信息添加进services数组里边就好了。