有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    两个问题:

    1. 使用RegionBootstrap时,必须等待第一次回叫didDetermineStateForRegion,然后再设置扫描周期或背景模式

    2. RegionBootstrap不是为了反复停止和开始扫描而设计的,您不应该继续构建新的RegionBootstrap实例。如果不想在应用程序启动时启动扫描,请不要使用此类。相反,在{}中调用{},并在{}回调中设置扫描周期。然后,您可以通过调用startMonitoringBeaconsInRegionstopMonitoringBeaconsInRegion