如果我从任务管理器中终止应用程序,则不会检测到信标
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
我正在使用 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