如果我从任务管理器中终止应用程序,则不会检测到信标

Not detecting beacons if I kill the app from the Task Manager

我正在使用 Altbeacon 检测 iBeacon。

如果应用程序在前台或应用程序在后台通过 "home" 按钮工作正常。在这两种情况下都完美无缺。

但是,当我通过任务管理器终止应用程序后尝试检测信标时,没有任何方法可以检测到任何信标。我要疯了。

我正在使用最新版本的 Altbeacon,这是我的代码(应用程序 class):

public void startBeaconScan() {

        beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().
        setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));  //iBeacon layout

        beaconManager.setBackgroundBetweenScanPeriod(500);
        beaconManager.setBackgroundScanPeriod(500);
        beaconManager.setForegroundBetweenScanPeriod(500);
        beaconManager.setForegroundScanPeriod(500);

        beaconManager.setRegionStatePeristenceEnabled(false);
        beaconManager.bind(this);

        region = new Region("myMonitoringUniqueId", Identifier.parse("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6"), null, null);
        new RegionBootstrap(this, region);
    }

我看了很多帖子,但我还没有找到任何解决方案。

用于测试的智能手机:小米 Redmi Note 2、三星 Galaxy S5

----------------更新------------------------

RegionBootstrap 回调代码:

@Override
    public void didDetermineStateForRegion(int arg0, Region arg1) {
        Log.d(TAG, "Got a didDetermineStateForRegion call: " + arg1.getId1());
    }

    @Override
    public void didEnterRegion(Region arg0) {
        Log.d(TAG, "Got a didEnterRegion call: " + arg0.getId1());
    }

    @Override
    public void didExitRegion(Region arg0) {
        Log.d(TAG, "Got a didExitRegion call: " + arg0.getBluetoothAddress());
    }

对于每一个,我都有默认日志,其中 none 个会在应用程序被终止后显示。

为了在您的应用程序被杀死后自动启动扫描信标,必须在自定义应用程序的 onCreate 方法中配置 RegionBootstrap class 而不是 Activity。

查看此处了解更多信息:http://altbeacon.github.io/android-beacon-library/background_launching.html