大家好我正在使用 android-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;
}
}
`
答案 0 :(得分:0)
两个问题:
使用RegionBootstrap
时,您必须等待第一次回拨到didDetermineStateForRegion
,然后才能设置扫描周期或后台模式。
RegionBootstrap
不是为反复停止和开始扫描而设计的 - 您不应该继续构建新的RegionBootstrap实例。如果您不希望扫描在应用启动时启动,请不要使用此类。而是在beaconManager.bind(this)
和onCreate
回调中调用onBeaconServiceConnected
设置您的扫描周期。然后,您可以致电startMonitoringBeaconsInRegion
和stopMonitoringBeaconsInRegion