Altbeacon扫描命令

时间:2016-07-22 13:22:32

标签: android bluetooth android-bluetooth altbeacon

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

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

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

1 个答案:

答案 0 :(得分:2)

该库不适用于此类临时扫描,但可以使用以下技术执行您喜欢的操作:

  1. 使用以下方法将扫描周期设置为5秒:

    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);
      }
    }