java E/BeaconManager:无法联系服务以设置扫描周期
大家好,我正在使用安卓-beacon-library
获取此消息时无法contact service
在开始扫描和信标未被扫描时设置扫描周期。这是我的密码
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
AxeltaLogger.debug("Application class on create is called");
mBeaconManager = BeaconManager.getInstanceForApplication(this);
mBeaconManager.getBeaconParsers().add(AxeltaBeaconParser.getInstance(context));
allBeaconsRegion = new Region("AxeltaS7", Identifier.parse("e2c56db5-dffb-48d2-b060-d0f5a71096e0"), null, null);
}
public void startScan() {
try {
stopScan();
regionBootstrap = new RegionBootstrap(this, allBeaconsRegion);
mBeaconManager.setBackgroundScanPeriod(SCAN_PERIOD);
mBeaconManager.setBackgroundBetweenScanPeriod(SCAN_BETWEEN_PERIOD);
mBeaconManager.setForegroundScanPeriod(SCAN_PERIOD);
mBeaconManager.setForegroundBetweenScanPeriod(SCAN_BETWEEN_PERIOD);
mBeaconManager.setBackgroundMode(true);
}catch (Exception e){
AxeltaLogger.err("Error>>>"+e);
}
}
public void stopScan() {
if (regionBootstrap != null) {
regionBootstrap.disable();
regionBootstrap = null;
}
}
`
# 1 楼答案
两个问题:
使用
RegionBootstrap
时,必须等待第一次回叫didDetermineStateForRegion
,然后再设置扫描周期或背景模式RegionBootstrap
不是为了反复停止和开始扫描而设计的,您不应该继续构建新的RegionBootstrap实例。如果不想在应用程序启动时启动扫描,请不要使用此类。相反,在{startMonitoringBeaconsInRegion
和stopMonitoringBeaconsInRegion