评论

蓝牙一些常见问题和小细节

一些蓝牙方面的问题以及小细节

*碎碎念

咱们说说蓝牙模块的一些常见的问题,大部分文档能找到的。有些文档有标注!但是发现有部分开发者没出坑,我会在下文提出!!!

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.蓝牙需要成对调用

以下接口需要成对调用

createBLEConnectioncloseBLEConnection

startBluetoothDevicesDiscoverystopBluetoothDevicesDiscovery

在关闭蓝牙的时候 closeBLEConnectionstopBluetoothDevicesDiscovery

2.小程序只支持低功耗蓝牙

哈哈低功耗蓝牙是啥??百度吧!!

*最后

以上就是蓝牙常见的一些问题,多看文档是可以解决很多小坑,深坑的话就来社区发帖吧!咱们下篇文章见
最后一次编辑于  01-11  
点赞 0
收藏
评论

2 个评论

  • zlqing
    zlqing
    07-26

    大佬,我的小程序蓝牙不兼容部分机型啊,已经开启定位和热点了

    07-26
    赞同
    回复
  • 蜡像6
    蜡像6
    05-08


    给楼主点个赞

    <input name="" value="">


    05-08
    赞同
    回复