收藏
回答

小程序蓝牙-监听方法接收数据丢失问题

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.onBLECharacteristicValueChange 客户端 Android 6.6.6 2.0.9


安卓系统(已测试多种版本的安卓手机和微信版本),在使用小程序的BLE蓝牙功能时,通过nofity接收数据,均出现了不同程度的数据不完整情况(数据量大概2万字节左右 20kb左右 设备端每次发送20字节),但是在IOS系统下就没出现问题。



//收到数据时回调

var that = this;    

wx.onBLECharacteristicValueChange(function (characteristic) {        

   that.data.str16 += that.ab2hex(characteristic.value);        

   clearTimeout(that.data.eTimeout);        

   that.data.eTimeout = setTimeout(function () {          

       console.log('---监听数据返回----', that.data.str16);        

   }, 1000);          

});


ab2hex:function(buffer) {

    var hexArr = Array.prototype.map.call(

        new Uint8Array(buffer),

        function (bit) {

            return ('00' + bit.toString(16)).slice(-2)

        }

    )

    return hexArr.join('');

}


PS:如果安卓手机第一次连接蓝牙,然后通过nofity接收数据,这时数据可能接收完成,这时退出该页面,断开蓝牙,释放蓝牙,再次进入这个页面时,连接蓝牙,再次通过nofity接收数据,就必出现数据不完成数据情况; ios上都没有此问题。


释放蓝牙代码如下:


//断开蓝牙连接

var that = this;

if (that.data.connectedDeviceId){

   wx.closeBLEConnection({

       deviceId: that.data.connectedDeviceId,

       success: function (res) {


       }

   })

}

//释放蓝牙

wx.closeBluetoothAdapter({

   success: function () {

           console.log('----释放蓝牙成功----');//已打印出来

   }

});




麻烦小程序官方给个解决方案

最后一次编辑于  2018-06-05
回答关注问题邀请回答
收藏

2 个回答

  • Tummy
    Tummy
    2018-06-05

    我加一下你微信了解一下这个问题吧,单从你的描述也不能复现问题,定位问题。

    2018-06-05
    有用
    回复 5
    • wangzl
      wangzl
      2018-06-05

      wang469666075

      2018-06-05
      回复
    • 屹TD
      屹TD
      2019-06-25

      请问一下解决这个问题了吗?

      2019-06-25
      回复
    • 沙子
      沙子
      2019-11-11
      我也遇到此类问题,低版本的安卓,只能接受20个字节
      2019-11-11
      回复
    • new
      new
      2020-09-09
      我也有这样的问题,请问如何解决
      2020-09-09
      回复
    • new
      new
      2020-09-09
      微信:nzl402623049
      2020-09-09
      回复
  • Kearney
    Kearney
    2022-02-11

    22考古,ios没有这个问题,华为就有

    2022-02-11
    有用
    回复
登录 后发表内容