首页 文章

AltBeacon库 - setBackgroundScanPeriod不工作

提问于
浏览
1

我正在使用Android Beacon Library检测信标 .

根据其他Stackoverflow问题,下面的答案是解决方案

beaconManager.setBackgroundScanPeriod(60000l);
beaconManager.setBackgroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();

但就我而言,它不起作用 . 我无法对扫描周期进行变化 .

Here is the code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    beaconManager = BeaconManager.getInstanceForApplication(this);
    beaconManager.getBeaconParsers().add(new BeaconParser()
            .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
    beaconManager.bind(this);
}

@Override
public void onBeaconServiceConnect() {
    try {
        beaconManager.setBackgroundScanPeriod(60000l);
        beaconManager.setBackgroundBetweenScanPeriod(60000l);
        beaconManager.updateScanPeriods();

        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId",
                Identifier.parse(Config.PROXIMITY_UUID), null, null));
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    Log.i(TAG, "minor:"+ beacons.iterator().next().getId3());
                }


            }
        });
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

1 回答

  • 4

    如果要更改前台中的扫描周期,可以使用等效方法更改前景行为:

    beaconManager.setForegroundScanPeriod(60000l);
    beaconManager.setForegroundBetweenScanPeriod(60000l);
    beaconManager.updateScanPeriods();
    

    了解上述操作将使扫描发生60秒,然后处理所有信标的结果,然后在开始循环之前停止扫描60秒 . 如果您不想每隔一分钟停止扫描,请使用这样的代码,在最后一个扫描周期结束后立即开始新的扫描周期:

    beaconManager.setForegroundScanPeriod(60000l);
    beaconManager.setForegroundBetweenScanPeriod(0l);
    beaconManager.updateScanPeriods();
    

相关问题