*碎碎念
咱们说说蓝牙模块的一些常见的问题,大部分文档能找到的。有些文档有标注!但是发现有部分开发者没出坑,我会在下文提出!!!
1.部分机型蓝牙模块需要开启定位
蓝牙和定位有啥关系?
不知道,非要一个答案就是和系统有关! (再问就自闭了orz....)
2.蓝牙不支持直连
如果你不通过接口搜索到蓝牙,从而直接去连接的话,你会发现 wx.getBluetoothDevices 获取不到已经连接的设备。不过在你搜索过之后你就可以直接连接了!!3.蓝牙连接失败
在调用蓝牙连接的时候,我们通常碰到蓝牙给我们返回 10003 / 10012 错误,通常是系统吐出来的(通常而不是所有的)。我们需要重新去连接,所以我们把蓝牙连接放进一个循环里面!!如:
async createBLEConnection(deviceID) {
// 进行连接蓝牙
let count = 8
let ress = null
while (count > 0) {
count -= 1
let err, res
[err, res] = await to(wepy.createBLEConnection({
discoverServiceType: 1,
deviceId: deviceID,
timeout: 3 * 1000
}))
ress = res
if ((res && res.errCode === 0) || (err && err.errCode === -1)) {
this.connet = 0
return true
}
await this.closeBLEConnection()
if (!this.ble.opened) {
tip.alert('蓝牙未开启!')
this.connet = 0
return
}
// 间隔2秒后 再次获取
await Time.sleep(2)
tip.loading('蓝牙连接中...')
this.connet = 0
}
if (ress && ress.errMsg.indexOf('createBLEConnection:ok') >= 0) {
this.connet = 0
return true
}
tip.loaded()
return false
}
以上是我用wepy框架写的!不建议直接复制
4.搜索成功后记得关闭蓝牙搜索
在通过startBluetoothDevicesDiscovery搜索成功之后记得调用
wx.stopBluetoothDevicesDiscovery
关闭搜索,如果不关闭手机性能差的会无比卡!对。。。
5. Android 上获取到的deviceId为设备 MAC 地址,iOS 是设备 uuid
哈哈!所以你需要搜索到设备的name或者localname去连接 ,localname有的手机是没有的!*补充一些
想了想!干脆把文档里面一些已经提出还会有人提的问题也 碎叨一下1.蓝牙需要成对调用
以下接口需要成对调用
createBLEConnection 和 closeBLEConnectionstartBluetoothDevicesDiscovery 与 stopBluetoothDevicesDiscovery
在关闭蓝牙的时候 closeBLEConnection 和 stopBluetoothDevicesDiscovery
大佬,我的小程序蓝牙不兼容部分机型啊,已经开启定位和热点了
给楼主点个赞
<
input
name
=
""
value
=
""
>