Altbeacon库无法在Android 5.0上运行

mar*_*arp 8 bluetooth-lowenergy ibeacon-android altbeacon android-5.0-lollipop

昨天我在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上工作,所以再次,任何帮助都会非常感激.

dou*_*ven 1

我正在使用基于 5.0+ 的最新 Altbeacon 版本,没有任何问题。事实上,我从未在 kitkat 上使用过它,所以我不确定我能提供帮助,但这是我监听 iBeacons 的工作代码。

实施信标消费者:

public class MainActivity implements BeaconConsumer
Run Code Online (Sandbox Code Playgroud)

初始化信标管理器

        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);
    }
Run Code Online (Sandbox Code Playgroud)

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, null));
}
Run Code Online (Sandbox Code Playgroud)

此代码适用于 3 台设备

  1. Nexus 4 5.0.1
  2. 三星 Galaxy s4 - 库存 5.0.1
  3. 三星 Galaxy s4 - CM12 5.1.1