小程序蓝牙扫描的设备列表与华为手机原生扫描的设备列表不一致
环境: 安卓版本,10.1.0.128,微信8.0.49,基础库3.4.5 需求: 需要使用小程序调用蓝牙连接蓝牙设备进行通信, 错误: 使用小程序进行蓝牙扫描发现扫描的结果和原生的蓝牙扫描不一致,在谷歌浏览器chrome://bluetooth-internals/#devices扫描也出现了这个问题, 而且小程序扫描蓝牙的设备列表可以多达100多个,小程序使用deviceId(MAC)地址连接会报错,但是原生蓝牙是可以直接连接设备的。 // 监听扫描到新设备事件
wx.onBluetoothDeviceFound((res) => {
res.devices.forEach((device) => {
// 这里可以做一些过滤
console.log('Device Found', device.deviceId, my_device, device)
if (device.deviceId == my_device) {
// 找到要搜索的设备后,及时停止扫描
wx.stopBluetoothDevicesDiscovery()
} else {
console.log('Device not Found', my_device, '持续扫描中...')
}
})
})
小程序控制台扫描的结果 [图片] 手机原生扫描结果 [图片] 直接通过DeviceId连接报错, console.log('开始搜寻设备');
var deviceId = my_device
// 打开蓝牙
wx.openBluetoothAdapter({
success(res) {
console.log('初始化蓝牙成功', res);
wx.createBLEConnection({
deviceId, // 搜索到设备的 deviceId
success: (res) => {
console.log('连接设备成功', deviceId, res)
// 连接成功,获取服务
wx.getBLEDeviceServices({
deviceId,
})
},
fail: (res) => {
console.log('连接设备失败', deviceId, res)
}
})
},
fail(error) {
console.log("open bluetooth fail:", error);
wx.showToast({
title: "open bluetooth fail!",
duration: 1500
})
}
})
[图片]