3

嗨,我已经使用 altbeacon 参考应用程序创建了应用程序。当应用程序在后台看到信标时,我想使用引导通知程序调用 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) {

}

}

4

1 回答 1

2

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

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

这将使背景检测时间与前景一样快。但请注意,这会使您的应用程序消耗大量电池电量。您可以将扫描周期调整为您对电池消耗的容忍度。如您所述,默认值为 5 分钟 (5*3600l)。

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

于 2014-09-22T23:01:12.923 回答