小程序开发蓝牙, 设备扫描无回调

最近开发一款蓝牙小程序, 最首要的的功能就是可以扫描周围的蓝牙设备. 翻了下相关文档很快就把demo写好给客户发过去了, 然后对方反馈说不断"重新进入小程序", 每隔4, 5次就会出现无法扫描到设备.

由于这个次数很固定, 自己也试验了一下果然也有类似的bug出现, 上网搜了下 原来是android底层的限制

    static final int NUM_SCAN_DURATIONS_KEPT = 5;
    // This constant defines the time window an app can scan multiple times.
    // Any single app can scan up to |NUM_SCAN_DURATIONS_KEPT| times during
    // this window. Once they reach this limit, they must wait until their
    // earliest recorded scan exits this window.
    static final long EXCESSIVE_SCANNING_PERIOD_MS = 30 * 1000;

按照注释的解释, 每30s内只能扫描5次

为了验证下是否正确, 我将每次进入小程序的时间拉长, 果然没有上述找不到设备的问题了

PS: 正常应该也不会有客户这么闲不断进来, 退出进来退出吧?

解决

这种限制貌似也没有太好的解决方法, 可以想到的方法就是第一次扫描过程中没有找到任何设备, 结束后自动开启第二次扫描(虽然有做一个按钮让用户自己点击开启扫描, 但是客户说自动扫描效果好点)

Page({
  onShow(){
      let isFirst = true

      // 监听扫描结束
      listen(res => {
          if (isFirst  && 没有任何设备){
                // 扫描
                startScan()
                isFirst = false
          }
      })

      // 扫描
      startScan()

  }
})

你可能感兴趣的:(小程序开发蓝牙, 设备扫描无回调)