Altbeacon 命令扫描

Altbeacon Scan on Command

我在 Android 设备(android-beacon-library)上使用 AltBeacon 进行蓝牙 iBeacon 检测。目前,我能够获取信标的唯一方法是通过回调:RangeNotifier

但是,我想要的功能是每 5 秒扫描一次附近的信标,总共只扫描 10 次(即扫描大约一分钟)。我希望能够在 for 循环中进行扫描,但似乎到目前为止唯一的方法是使用回调,我无法控制它何时被触发。

有谁知道使用 Android AltBeacon 是否可以实现此行为?

该库不是为这种临时扫描而设计的,但可以使用以下技术执行您想要的操作:

  1. 将扫描周期设置为五秒:

    mBeaconManager.setForegroundBetweenScanPeriod(5000l);
    
  2. 开始测距时设置开始时间戳:

    mScanStartTime = System.currentTimeMillis();
    mBeaconManager.startRangingBeaconsInRegion(region);
    
  3. 扫描回调将每五秒调用一次,并显示检测到的信标列表。处理这些信标,并在 50 秒(10 次扫描)过去后停止扫描:

    @Override
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
      // Process beacons here
      if (System.currentTimeMillis() - mScanStartTime > 50*1000l) {
        mBeaconManager.stopRangingBeaconsInRegion(region);
      }
    }