2

I experience an issue and can reproduce it on different devices with different Android OS. I get the expected behaviour with iBeacon scanning for the first time. When I scan the next time I get no Beacons. The result list in delegate is empty. I printed a count on the setRangeNotifier with the size of the beacons but apparently after it only shows the beacons size to be 1 for the first time after which it continually displays a 0.

beaconManager.setRangeNotifier(new RangeNotifier() {
    @Override
    public void didRangeBeaconsInRegion(final Collection<Beacon> beacons, Region region) {
       Log.d("Beacons count",beacons.size());
    }
});

Output: Beacons Count 1 Beacons Count 0 Beacons Count 0 Beacons Count 0

My ranging period and scanning period is as below

beaconManager.setBackgroundScanPeriod(1000l);
beaconManager.setBackgroundBetweenScanPeriod(31000l);
4

3 回答 3

1

这不是预期的行为,我还没有在其他设备上的 Android 4.4 上看到过这种情况。根据有限的信息,这可能是应用程序问题,也可能是一加的 4.4 CynogenMod ROM 问题。请参阅我的其他答案以及参考设备(Nexus 5)的详细测试用例。

要消除应用程序问题的可能性,请尝试使用基于相同库的定位应用程序,看看您是否得到相同的结果。

于 2015-02-28T00:17:49.087 回答
1

我试图重现您描述的症状,但无法在配备 Android 5 和传输 RadBeacon USB 的 Nexus 5 上重现。

参考应用修改:

  • 将这些行添加到 BeaconReferenceApplication onCreate() 方法:

    beaconManager.setBackgroundBetweenScanPeriod(1000l);
    beaconManager.setBackgroundBetweenScanPeriod(31000l);
    beaconManager.setAndroidLScanningDisabled(true);
    BeaconManager.setDebug(true);
    

上面的第三行是必需的,因为我正在使用 Android 5 的 Nexus 5 上进行测试,并且我想练习 4.x 扫描 API,就像在 4.4 手机上一样。

  • 将此行添加到 RangingActivity didRangeBeaconsInRegion 回调:

    Log.d(TAG, "ranged beacon: "+firstBeacon.toString());
    

测试步骤:

  • 启用 10 HZ 的 RadBeacon USB 传输。

  • 记录结果:

    $ /Users/dyoung/sdk-android-studio/platform-tools/adb logcat -v time | grep "anged beacon"
    
  • 运行参考应用程序,在前台开始测距,三秒钟后将其置于后台。查看以下日志记录结果:

    03-01 08:39:00.146 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:01.282 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:02.482 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:03.515 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:12.148 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:44.274 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:40:16.179 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:40:48.239 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:41:20.272 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:41:52.205 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:42:24.202 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    

如您所见,回调在前台每 1.1 秒出现一次,在后台每 32 秒出现一次。这正如预期的那样。

如果您无法在具有 Cyanogenmod 4.4 的 OnePlus 设备上使用参考应用程序重复上述步骤,则问题可能出在该设备的 ROM 上。如果您可以确认这一点并在没有回调的期间捕获完整的 Logcat 输出(如上所述打开调试),请在http://github.com/AltBeacon/android-beacon打开一个问题-library/issues并附上日志捕获的副本。

于 2015-03-01T13:55:34.420 回答
0

经过进一步思考,我认为问题在于扫描间隔。报告的扫描间隔是每 32 秒花费 1 秒寻找信标。这还不够占空比,特别是对于仅以 1Hz 传输的信标。由于无线电噪声,并非所有传输都被接收,扫描持续时间为 1100 毫秒或更长很重要,以防止传输跨越扫描仪启动或关闭的边界。

于 2015-03-11T21:41:50.437 回答