我正在尝试使用android beacon库更改扫描周期。这是我的代码
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.bind(this);
try {
beaconManager.setForegroundScanPeriod(50l); // 1100 mS
beaconManager.setForegroundBetweenScanPeriod(0l); // 0ms
beaconManager.updateScanPeriods();
}
catch (RemoteException e) {
Log.e("error", e.getMessage());
}
我尝试了不同的设备,但我总是遇到这个错误 BeaconManager未绑定到该服务。调用beaconManager.bind(BeaconConsumer consumer)并等待onBeaconServiceConnect()的回调
我认为即使我收到此错误,扫描周期的值也会发生变化,但我不确定
答案 0 :(得分:0)
在 之后,您无法调用beaconManager.updateScanPeriods();
来回复onBeaconServiceConnect()
,否则您会收到问题中提到的错误。了解对信标扫描服务的bind()
统计信息的调用,这不是即时的。当您拨打电话更新扫描周期时,如果服务尚未启动,它将失败 - 需要一两秒钟。
两个选项:
onBeaconServiceConnect()
内的扫描周期。bind()
之前移动设置前景和后台扫描周期的代码,然后移除beaconManager.updateScanPeriods();
行。如果在调用bind之前设置扫描周期,则会在服务启动时自动应用它们。