收藏
回答

蓝牙无法正常断开连接

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.closeBLEConnection,wx.closeBluetoothAdapter 客户端 6.7.1321 2.2.1

正常情况下,这一步可以实现

wx.createBLEConnection({

success: (res) => {

},

fail: function(err) {

wx.showToast({

title: '接连失败',

icon: 'none',

duration: 2000

})

// 断开

that.DisconnectBle(deviceId);

// 关闭蓝牙

that.closeBluetoothAdapter();

})

但当我退出小程序,再次进入却提示10006,这个经我多次测试是设备并没有断开,要在小程序界面上手动关闭蓝牙才能再次连接,在手机桌面手动关闭蓝牙,也没用...一定要在小程序界面上手动关闭蓝牙才可以..希望有人解决一下问题,


回答关注问题邀请回答
收藏

4 个回答

  • 2019-09-15

    楼主,你这边解决了吗

    2019-09-15
    有用
    回复 2
    • 思情话意
      思情话意
      2019-09-16

      并没有

      2019-09-16
      回复
    • 栉风
      栉风
      2019-11-15
      同样遇到,请问有解决方案吗
      2019-11-15
      回复
  • DuHu
    DuHu
    2019-01-28

    我也遇到了这个问题,请问有什么解决方案?

    2019-01-28
    有用
    回复
  • Cc
    Cc
    2018-08-07

    是小程序进入了后台把,并没有被关闭

    2018-08-07
    有用
    回复 10
    • 思情话意
      思情话意
      2018-08-07

      您好,这个大概会怎么样子的过程??我问了下后台,他说并没有作任何处理只是停止了广播

      that.DisconnectBle(deviceId);

      that.closeBluetoothAdapter();
      这个没用的吗,瑟瑟发抖


      2018-08-07
      回复
    • Cc
      Cc
      2018-08-07回复思情话意

      可以把代码贴全一点吗

      2018-08-07
      回复
    • 思情话意
      思情话意
      2018-08-07回复Cc

      稍等一会

      2018-08-07
      回复
    • 思情话意
      思情话意
      2018-08-09回复Cc

      大佬!!!我遇到更严重的问题了:

      IOS:16个数字(正常发送)   指的是下面的var test;

      20个数字(正常发送)

      22个数字(可以发送,串口收到数据然没有返回数据)  

      24个数字(wx.writeBLECharacteristicValue回调函数成功执行,表示已发送成功,但串口收到数据,也没有返回数据)

      // 向蓝牙设备发送一个0x00的16进制数据

      writeBLECharacteristicValue(deviceId, serviceId, characteristicId) {

      var that = this;

      // 向蓝牙设备发送一个0x00的16进制数据

      var test = '12345678123456781234';

      let buffer = hexStringToArrayBuffer(test)

      console.log("开始向蓝牙设备发送一个0x00的16进制数据", buffer)


      //向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持write

      wx.writeBLECharacteristicValue({

      deviceId: deviceId,

      serviceId: serviceId,

      characteristicId: characteristicId,

      value: buffer,

      success: function(res) {

      setTimeout(function() {

      wx.hideLoading()

      }, 2000)

      console.log(res)

      console.log("成功向低功耗蓝牙设备特征值中写入二进制数据")


      },

      fail: function(err) {

      console.log('写入二进制数据--失败')

      console.log(err.errCode);

      }

      })


      }



      // 十六进制字符串===>ArrayBuffer

      function hexStringToArrayBuffer(str) {

      if (!str) {

      return new ArrayBuffer(0);

      }

      var buffer = new ArrayBuffer(str.length); //创建str.length字节的内存

      let dataView = new DataView(buffer)

      let ind = 0;

      for (var i = 0, len = str.length; i < len; i += 2) {

      let code = parseInt(str.substr(i, 2), 16)

      dataView.setUint8(ind, code)

      ind++

      }

      return buffer;


      }


      2018-08-09
      回复
    • Cc
      Cc
      2018-08-09回复思情话意

      有米有开启notify 

      2018-08-09
      回复
    查看更多(5)
  • 灵芝
    灵芝
    2018-08-07

    你好,这边没有复现,请详细描述问题复现的路径

    2018-08-07
    有用
    回复 1
    • DuHu
      DuHu
      2019-01-28

      我也遇到了这个问题,请问有什么解决方案?

      2019-01-28
      回复
登录 后发表内容