AltBeacon 库 - setBackgroundScanPeriod 不工作
AltBeacon Library - setBackgroundScanPeriod not working
我正在使用 Android Beacon Library 检测信标。
根据其他 Whosebug 问题的答案如下是解决方案
beaconManager.setBackgroundScanPeriod(60000l);
beaconManager.setBackgroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();
但就我而言,它不起作用。我无法更改扫描周期。
代码如下:
@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();
}
}
如果你想改变前台的扫描周期,你可以使用等效的方法来改变前台行为:
beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();
了解上面的操作是进行 60 秒的扫描,然后处理看到的所有信标的结果,然后在开始循环之前停止扫描 60 秒。如果您不想每隔一分钟停止一次扫描,请使用这样的代码,它会在最后一次扫描结束后立即开始新的扫描周期:
beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(0l);
beaconManager.updateScanPeriods();
我正在使用 Android Beacon Library 检测信标。
根据其他 Whosebug 问题的答案如下是解决方案
beaconManager.setBackgroundScanPeriod(60000l);
beaconManager.setBackgroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();
但就我而言,它不起作用。我无法更改扫描周期。
代码如下:
@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();
}
}
如果你想改变前台的扫描周期,你可以使用等效的方法来改变前台行为:
beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();
了解上面的操作是进行 60 秒的扫描,然后处理看到的所有信标的结果,然后在开始循环之前停止扫描 60 秒。如果您不想每隔一分钟停止一次扫描,请使用这样的代码,它会在最后一次扫描结束后立即开始新的扫描周期:
beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(0l);
beaconManager.updateScanPeriods();