8

昨天我在 Nexus 4 上获得了 Android 5.0 的更新,而 altbeacon 库停止检测信标。似乎 didEnterRegion 和 didRangeBeaconsInRegion 在监视和测距时甚至都没有被调用。

即使是 Radius Networks 的 Locate 应用程序现在的行为也有所不同,信标的值一旦被检测到,就不再更新,而且通常看起来好像信标超出了范围。

我注意到不同的一件事是,现在在 logcat 中出现以下行“BluetoothLeScanner:找不到回调包装器”。我继续寻找那个类,发现它是用 Android L 引入的,但我不知道这是否与它有关。

重要的是要说,在更新之前,我一直在使用定位应用程序和参考应用程序,没有任何麻烦。

我不知道这是否是一个普遍的问题,但如果它发生在我身上,我相信它可能会发生在其他人身上,所以任何帮助都将不胜感激。

提前致谢!

更新:

在使库无法正常工作后,我决定尝试库的 Android L 分支。我所做的是将新库插入参考应用程序,但也没有按预期工作。

通过通知设备何时进入新区域,Monitor Activity 似乎工作正常。然而,Ranging Activity 不报告任何信标,尽管 didRangeBeaconsInRegion 被调用,但始终报告零信标。奇怪的是,当活动暂停(暂时切换到另一个应用程序)时,logcat 显示现在 didRangeBeaconsInRegion 确实被实际信标调用。

我现在有点卡住了,因为我不知道如何让任何库在 Android L 上运行,所以再次感谢任何帮助。

4

2 回答 2

1

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

实现信标消费者:

public class MainActivity implements BeaconConsumer

初始化信标管理器

        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, null));
}

此代码适用于 3 台设备

  1. 连结 4 5.0.1
  2. 三星 Galaxy s4 - 库存 5.0.1
  3. 三星盖乐世 s4 - CM12 5.1.1
于 2015-07-14T14:32:56.163 回答
0

老问题,但也许有些人会尝试为您必须请求权限的更高系统寻找答案。您需要Manifest.permission.ACCESS_FINE_LOCATION在扫描前询问。至少这是我遇到的问题。在我看来,lib 至少应该使这种情况崩溃并指出问题

于 2017-11-12T10:24:56.500 回答