AltBeacon库BootstrapNotifier不会调用didEnterRegion

时间:2014-09-22 11:28:20

标签: android ibeacon ibeacon-android android-ibeacon altbeacon

您好我使用altbeacon参考应用创建了应用。当应用程序在后台看到信标时,我想使用bootstrap通知程序调用didEnterRegion。但我不希望它每5分钟扫描一次背景,我希望我的应用程序立即对新的灯塔作出反应。有没有办法做到这一点?

我的代码:

private static final String TAG = ".Application";
private final Identifier uuid = Identifier.parse("A1B2C3D4-AAAA-48D2-B060-D0C0D0C0D0C0");
private RegionBootstrap regionBootstrap;

@Override
public void onCreate() {
    super.onCreate();

    Log.d(TAG, "App has started");

    Region region = new Region(TAG, uuid, null, null);
    BeaconManager.debug = true;
    BeaconManager.getInstanceForApplication(this).getBeaconParsers().add(
            new BeaconParser().setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
    regionBootstrap = new RegionBootstrap(this, region);
}

@Override
public void didEnterRegion(Region region)
{
    Log.i(TAG, "BACKGROUND ACTIVATED");
}

@Override
public void didExitRegion(Region region) {

}

@Override
public void didDetermineStateForRegion(int i, Region region) {

}

}

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码增加后台扫描的频率:

beaconManager.setBackgroundBetweenScanPeriod(0l);
beaconManager.setBackgroundScasnPeriod(1100l);

这将使背景检测时间与前景一样快。但要预先警告,这将使您的应用程序使用大量电池电量。您可以在扫描周期与电池消耗容差之间进行调整。如您所述,默认值为5分钟(5 * 3600l)。

Android L拥有新的扫描API,可以帮助改善检测计时器和电池使用之间的权衡。但对于4.3和4.4应用程序,您需要进行判断调用。