昨天我在Nexus 4上获得了
Android 5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.
即使Radius Networks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.
我注意到的一点是,现在在logcat中出现以下行“BluetoothLeScanner:找不到回调包装器”.我继续寻找那个类,看到它是用Android L引入的,但我不知道这是否与它有关.
重要的是要说在更新之前我一直在使用Locate应用程序和参考应用程序而没有任何麻烦.
我不知道这是否是一个普遍的问题,但如果它发生在我身上,我确信它可能发生在其他人身上,所以任何帮助都会真的很受欢迎.
提前致谢!
更新:
在让图书馆工作失败后,我决定尝试图书馆的Android L分支.我所做的是我将新库插入参考应用程序,但也没有按预期工作.
通过在设备进入新区域时通知,Monitor Activity似乎正常工作.但是,测距活动不报告任何信标,尽管已经调用了ofRangeBeaconsInRegion,但总是报告零信标.奇怪的是,当活动暂停时(暂时切换到另一个应用程序),logcat显示现在使用实际信标调用了didRangeBeaconsInRegion.
我现在有点卡住,因为我不知道如何让任何图书馆在Android L上工作,所以再次,任何帮助都会非常感激.
解决方法
我在5.0上使用最新的Altbeacon构建,并没有任何问题.事实上,我从来没有在kitkat上使用它,所以我不确定我能帮忙,但这是我的工作代码,听取iBeacons.
实施beaconConsumer:
public class MainActivity implements BeaconConsumer
init BeaconManager
beaconManager = BeaconManager.getInstanceForApplication(this); if (beaconManager != null && !beaconManager.isBound(this)) { beaconManager.getBeaconParsers().add(new BeaconParser(). setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); beaconManager.bind(this); }
onConnect并启动列表器
@Override public void onBeaconServiceConnect() { beaconManager.setRangeNotifier(new RangeNotifier() { @Override public void didRangeBeaconsInRegion(Collection<Beacon> beacons,Region region) { if (beacons.size() > 0) { Beacon firstBeacon = beacons.iterator().next(); } } }); beaconManager.startRangingBeaconsInRegion(new Region("com.example.app",null,null)); }
此代码适用于3个设备
> Nexus 4 5.0.1>三星galaxy s4 – 股票5.0.1>三星galaxy s4 – CM12 5.1.1