收藏
回答

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

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
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  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • Tummy
    Tummy
    2018-06-05

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

    2018-06-05
    赞同
    回复 2
    • wangzl
      wangzl
      2018-06-05

      wang469666075

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

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

      06-25
      回复