安卓系统(已测试多种版本的安卓手机和微信版本),在使用小程序的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('----释放蓝牙成功----');//已打印出来

   }

});




麻烦小程序给个解决方案

展开全部
收起
1回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Dara永远三岁

    1人对此回答表示赞同

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

    展开
    1
    1回复
    发布于 6年前

    评论(1)

    收起评论

    • 杨承俊 2019-01-12 22:22

      wang469666075

      回复
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部