环境:
安卓版本,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
})
}
})
小程序蓝牙功能肯定没办法与手机原生蓝牙功能相比;
小程序蓝牙功能直连的前提是小程序之前已经搜索到蓝牙并连接成功的,意思就是断开重连功能;
并且你要按照他给的文档步骤流程来:https://developers.weixin.qq.com/miniprogram/dev/framework/device/ble.html
我们尝试了“已经搜索到蓝牙并连接成功”,也是一样的问题;
小程序蓝牙功能是收到了谷歌内核的限制吗?,我们之前打算使用谷歌浏览器连接蓝牙设备,但是和小程序一样都出现了这个问题,小程序和谷歌浏览器都识别到了大量未知设备,而且和原生设备(手机和PC)扫描的列表不一致,扫描出的列表和原生扫描的列表相互之前不存在;
想知道还有其他方法建立连接,或者其他的思路实现蓝牙连接,感谢!