收藏
回答

无法搜索到蓝牙外设

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug startBluetoothDevicesDiscovery 客户端 Android 6.6.7 2.1.0

使用华为有时候会出现无法搜索到设备列表,周边一个设备都搜索不到,然后用nrf Connect等工具也无法搜索到,这个时候关闭小程序,nrf Connect就可以立刻搜索到


使用oppo手机就一直都搜索不到周边设备,列表返回空



请帮忙,今天已提交日志,微信id AIRkai

最后一次编辑于  2018-06-20  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • 吃软饭.孙
    吃软饭.孙
    2018-06-20

    首先需要确认,在搜索之前已经初始化了蓝牙模块。

    也就是说,蓝牙设备的状态需要严格控制。如果在使用前已经打开,则可以试着先关闭再打开。

    您可以尝试一下。

    2018-06-20
    赞同 1
    回复
  • 张帆
    张帆
    2018-06-20

    有的,在其他机型小米,ios都很稳定,而且为了防止蓝牙的问题,我们每次使用都会关闭打开蓝牙再使用


    restartMatchDevice(restartCallBack) {
     
    var that = this   // 注意this的层级关系
     
    wx.closeBluetoothAdapter({
     
    complete: function (res) {
     
    console.log('关闭完毕')
     
    console.log(res)
     

     
    wx.openBluetoothAdapter({
     
    success: function (res) {
     
    that.openAdapter = true
     
    that.beganSearch(restartCallBack)
     
    },
     
    fail: function (res) {
     
    that.openAdapter = false
     
    tool.showMention('请打开蓝牙1', true);
     
    }
     
    })
     
    }
     
    })
     
    }
     


    2018-06-20
    赞同
    回复
  • Tummy
    Tummy
    2018-06-20

    定位开关,微信定位权限看看是否获取到了。

    部分手机如果灭有这两个权限搜索不到设备。

    2018-06-20
    赞同
    回复 6
    • 张帆
      张帆
      2018-06-20

      oppo打开定位后可以,

      但华为的一直都是开着的,但有几率出现搜不到

      2018-06-20
      回复
    • Tummy
      Tummy
      2018-06-20回复张帆

      搜索相关的代码贴一下,有过滤设备么?

      2018-06-20
      回复
    • 张帆
      张帆
      2018-06-20
      // 搜索指定名称的设备
      searchMatchDevice(searchCallBack, matchName) {
        tool.showMention('匹配中', false);
        var that = this   // 注意this的层级关系
        console.log('需要查找的设备:' + matchName)
        console.log(that.openAdapter)
        if (that.openAdapter == false) {
          searchCallBack(null, false, '请打开蓝牙3')
          return
        }
        wx.getBluetoothDevices({
          success: function (res) {
            let devices = res.devices
            console.log('找到' + devices.length + '个设备') //这里devices.length返回的是0
            for (let i = 0; i < devices.length; i++) {
              ///
            }
       
          },
          fail: function (res) {
            console.log('搜索失败')
            console.log(res)
            searchCallBack(null, false, '搜索失败')
          }
        })
      }

      谢谢!连续搜索了10次,但返回的日志一直显示0个设备,周边是有5个设备的,其他手机当时也可以搜索到

      04:15:48.114 BLEManage.js? [sm]:34 成功,准备开始搜索:
      04:15:48.115 BLEManage.js? [sm]:35 {errCode: 0, errMsg: "startBluetoothDevicesDiscovery:ok", isDiscovering: true}
      04:15:48.197 BLEManage.js? [sm]:50 {available: true, discovering: true}
      04:15:50.120 index.js? [sm]:312 搜索:10
      04:15:50.126 BLEManage.js? [sm]:80 需要查找的设备:MCOD-5acf06940002
      04:15:50.128 BLEManage.js? [sm]:81 true
      04:15:50.593 BLEManage.js? [sm]:89 找到0个设备
      04:15:52.134 index.js? [sm]:312 搜索:9
      04:15:52.140 BLEManage.js? [sm]:80 需要查找的设备:MCOD-5acf06940002
      04:15:52.143 BLEManage.js? [sm]:81 true
      04:15:52.681 BLEManage.js? [sm]:89 找到0个设备
      04:15:54.149 index.js? [sm]:312 搜索:8
      04:15:54.153 BLEManage.js? [sm]:80 需要查找的设备:MCOD-5acf06940002
      04:15:54.155 BLEManage.js? [sm]:81 true
      04:15:54.386 BLEManage.js? [sm]:89 找到0个设备
      04:15:56.158 index.js? [sm]:312 搜索:7
      04:15:56.164 BLEManage.js? [sm]:80 需要查找的设备:MCOD-5acf06940002
      04:15:56.166 BLEManage.js? [sm]:81 true
      04:15:56.474 BLEManage.js? [sm]:89 找到0个设备
      04:15:58.170 index.js? [sm]:312 搜索:6
      04:15:58.175 BLEManage.js? [sm]:80 需要查找的设备:MCOD-5acf06940002
      04:15:58.179 BLEManage.js? [sm]:81 true
      04:15:58.590 BLEManage.js? [sm]:89 找到0个设备


      2018-06-20
      回复
    • Tummy
      Tummy
      2018-06-20回复张帆

      微信号给一下,我拉一下日志看看。

      这里我还是比较怀疑微信没有拿到定位的权限导致的。

      2018-06-20
      回复
    • 张帆
      张帆
      2018-06-21回复Tummy

      微信id AIRkai

      谢谢

      2018-06-21
      回复
    查看更多(1)