收藏
回答

小程序蓝牙扫描的设备列表与华为手机原生扫描的设备列表不一致

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 蓝牙API 微信安卓客户端 8.0.49 3.4.5

环境:

安卓版本,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!",
          duration1500
        })
      }
    })

最后一次编辑于  05-30
回答关注问题邀请回答
收藏
登录 后发表内容