我正在研究需要扫描一组信标的Android应用程序。前景扫描的默认配置表示在10秒的时间间隔内,将执行10个扫描周期;因为
DEFAULT_FOREGROUND_SCAN_PERIOD = 1100L;
在第一阶段,我正在以这种方式扫描一组带有mac地址列表的信标:
public void startScanningRegions(){
try {
Region region = null;
for(int i = 0; i < beaconsMacAddresses.size(); i++){
region = new Region("region_" + i,beaconsMacAddresses.get(i));
beaconManager.startRangingBeaconsInRegion(region);
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onBeaconServiceConnect() {
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public synchronized void didRangeBeaconsInRegion(Collection<org.altbeacon.beacon.Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.d(TAG, "Collected beacons size: " + beacons.size());
}
}
});
startScanningRegions();
}
这种方法运行良好,即每个回调对应某个区域,并且包含一个非空的收集信标列表,通常是一个项目,因为默认扫描周期为1.1秒,信标传输频率为1 /第
然而,我将在我的应用程序中使用的信标数量将是一个巨大的数字,并且通过为每个信标创建新区域来扫描它们,我发现共同的UUID可能有所帮助。所以我将扫描代码更新为:
public void startScanningRegions(){
Region region1 = new Region("uuid_region", Identifier.parse(ConstantStrings.AXA_BEACON_UUID),null,null);
beaconManager.startRangingBeaconsInRegion(region1);
} catch (RemoteException e) {
e.printStackTrace();
}
}
此处出现问题。在10秒的时间间隔内,正在调用大约10个回调,每个回调最多包含2-3个信标,即每个信标现在在10秒间隔内被收集一次或两次,但是它被收集7-8时间由mac_address区域。
我需要捕捉范围内的每个信标,至少5-6次/ 10秒才能登录工作。我怎样才能改善这一点?