E / BeaconManager:无法联系服务以设置扫描周期

时间:2017-12-05 06:14:28

标签: java android ibeacon-android

大家好我正在使用 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;
    }
}

`

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 使用RegionBootstrap时,您必须等待第一次回拨到didDetermineStateForRegion,然后才能设置扫描周期或后台模式。

  2. RegionBootstrap不是为反复停止和开始扫描而设计的 - 您不应该继续构建新的RegionBootstrap实例。如果您不希望扫描在应用启动时启动,请不要使用此类。而是在beaconManager.bind(this)onCreate回调中调用onBeaconServiceConnected设置您的扫描周期。然后,您可以致电startMonitoringBeaconsInRegionstopMonitoringBeaconsInRegion

  3. 开始和停止扫描