我使用Alt-Beacon参考应用程序作为如何实现引导区域的起点。如果终止,应用程序将重新启动,但信标格式始终设置为Alt-beacon,而不是iBeacon。
启动时的Logcat:
D/BeaconsParser:解析信标布局:m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,D:25-25
引导代码:
beaconManager = org.altbeacon.beacon.BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager
.getBeaconParsers()
.add(new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.setBackgroundBetweenScanPeriod(5000l);
beaconManager.setBackgroundScanPeriod(1000l);
beaconManager.setRegionStatePersistenceEnabled(false);
Region region = new Region("backgroundRegion",null, null, null);
regionBootstrap = new RegionBootstrap(this, region);
BackgroundPowerSaver backgroundPowerSaver = new BackgroundPowerSaver(this);
我希望当应用程序重新启动时,我会看到:
m: 2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24
我在Android Studio 3.1.3中使用AltBeacon的2.15.2,三星S5 Mini的测试设备运行Android 6.0.1
更多信息:当手机重新启动并连接USB时,我希望看到应用程序启动并收听iBeacon数据包。它似乎重新启动,但被操作系统杀死了。
Logcat:
12-07 17:32:08.132 8359-8359/net.simplesdkest I/InstantRun:启动即时运行服务器:是主进程
12-07 17:32:08.212 8359-8359/net.simplesdkest I/Beacon Manager:Beacon Manager在名为"net.simplesdktest"的pid 8359上启动,用于应用程序包"net.somplesdktest'。isMainProcess=true
12-07 17:32:08.357 4889-4889/?I/TaskManager:程序包信息:getRunningAppProcesses((-proc:net.simplesdkest,pkg:net.simplesbkest,uid:10346,pid:8359
12-07 17:32:12.822 2390-3458/?I/ActivityManager:杀死8359:net.simplesdkest/u0a346(调整15(:DHA:空#21
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
这个检测到ibeacon格式BLE信标,不是吗?
源
第一次创建信标管理器时,默认情况下会添加AltBeacon格式。我已经设法清除了这一点,并设置了iBeacon,它现在正在被检测。