美文网首页小程序低功耗蓝牙
微信小程序低功耗蓝牙开发那些坑(三)

微信小程序低功耗蓝牙开发那些坑(三)

作者: 唐植超 | 来源:发表于2019-03-19 23:36 被阅读0次

前言

这几天似乎风平浪静,没有什么大的问题,领导就开始考虑体验度的事,说这个连接速度还是太慢,希望能够把速度提快,我个人认为应该没有太多的改进空间,但是领导要求了,我也只能硬着头皮看,结果发现了第三个坑.

蓝牙连接的等待时间不确定问题

我自己看了一遍原来的代码,发现有好几处等待,是故意等待的,问了相关的人员以后,才知道,微信的低功耗蓝牙在扫描完成以后,到连接之前,需要等到一个时间,官方说的三秒左右,于是乎,这位同事就等了个三秒,也就是说,实际的连接代码是这样:

 setTimeout(() => {
    wx.createBLEConnection({
      deviceId: that.deviceId,
      success: res => {
        console.log('连接蓝牙', res)
        if (res.errCode == 0) {
          wx.showToast({
            title: '蓝牙连接设备成功',
            icon: 'none'
          })
          //连接成功后的代码
        }
      },
      fail: err => {
        console.log('连接失败:', err)
        console.log(count): 
      },
      complete: function(res) {
        console.log('连接蓝牙执行', res)
      }
    })
  }, 3000)

这代码我很难接受:无论如何都必须要等三秒
经过多次试验,貌似发现很多新手机只需要等个200-300毫秒就可以了,老手机也差不多1500毫秒,我猜测着三秒的话,估计是很差的那种手机了.
于是我改造了这块代码

 BleUtils.tryConnect = function(count,flag){
    if(count < 6 && flag == false){ //第一次进方法
        //等待500毫秒执行一次连接
        setTimeout(function(){
        wx.createBLEConnection({
          deviceId: that.deviceId,
          success: res => {
            console.log('连接蓝牙', res)
            if (res.errCode == 0) {
              wx.showToast({
                title: '蓝牙连接设备成功',
                icon: 'none'
              })
              BleUtils.tryConnect(1,true); //让他走连接成功的代码
            }
          },
          fail: err => {
            console.log('连接失败:', err)
            BleUtils.tryConnect(count + 1 ,false); //失败后再次重试
          },
          complete: function(res) {
            console.log('连接蓝牙执行', res)
          }
        })
        },500);
        return ;
    }  
    if(count == 6){ //尝试连接 超过3秒
        return;
    }
    if(flag == true){ //连接成功
        //走成功逻辑
        return;
    }
}

思路跟前面的重连差不多,都是多次尝试,这样既兼顾了慢的手机,也照顾了快的手机,领导拿几台手机尝试,确实快了很多,十分满意.
然而,新的坑已经在路上..

相关文章

网友评论

    本文标题:微信小程序低功耗蓝牙开发那些坑(三)

    本文链接:https://www.haomeiwen.com/subject/vigomqtx.html