我在Android设备(android-beacon-library)上使用AltBeacon进行蓝牙iBeacon检测。目前,我能够接收信标的唯一方法是通过回调:RangeNotifier
。
然而,我想要的功能是每5秒,对附近的信标执行扫描,并且总共只执行10次(即扫描大约一分钟)。我希望能够在for循环中进行扫描,但到目前为止,似乎唯一的方法是使用回调,我无法控制它何时被触发。
是否有人知道使用Android AltBeacon是否可以实现此行为?
答案 0 :(得分:2)
该库不适用于此类临时扫描,但可以使用以下技术执行您喜欢的操作:
使用以下方法将扫描周期设置为5秒:
mBeaconManager.setForegroundBetweenScanPeriod(5000l);
开始测距时设置开始时间戳:
mScanStartTime = System.currentTimeMillis();
mBeaconManager.startRangingBeaconsInRegion(region);
扫描回调将每五秒钟调用一次,并检测到信标列表。处理这些信标,如果已经过了50秒(10次扫描),则停止扫描:
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
// Process beacons here
if (System.currentTimeMillis() - mScanStartTime > 50*1000l) {
mBeaconManager.stopRangingBeaconsInRegion(region);
}
}