RadiusNetworks iBeacon didRangeBeaconsInRegion返回0个信标

时间:2014-05-23 13:43:39

标签: ibeacon

我正在尝试使用特定的UUID和Major来检测iBeacons。正在调用didRangeBeaconsInRegion,但它返回的Beacon集合有0个条目。

以下是我的代码(删节了一下)

private static final String BEACON_UUID = "F8AD3E82-0D91-4D9B-B5C7-7324744B2026";
private static final int BEACON_MAJOR = 36582;

@Override
public void onIBeaconServiceConnect() {
    iBeaconManager.setRangeNotifier(new RangeNotifier() {
        @Override
        public void didRangeBeaconsInRegion(Collection<IBeacon> iBeacons, Region region) {
            if (iBeacons.size() > 0) {
                IBeacon thisBeacon = iBeacons.iterator().next();
            }
        }
    });

    try {
        iBeaconManager.startRangingBeaconsInRegion(new Region("myUniqueID", BEACON_UUID, BEACON_MAJOR ,null));
    } catch (RemoteException e) {
        e.printStackTrace();
    }

}

我假设我正在成功地进行绑定,因为didRangeBeaconsInRegion(..)被成功调用。

我已经使用RadiusNetwork自己的应用程序来检测信标,并且工作正常,我可以看到所有这些,所以它似乎不是我设备上的蓝牙问题

2 个答案:

答案 0 :(得分:2)

一些提示:

  1. 仔细检查您的BEACON_UUID和BEACON_MAJOR对于正在传输的信标是否正确。对于测试,尝试将这两个设置为暂时为空,直到它工作,然后您可以将它们设置回您拥有的值。

  2. 如果在给定周期中没有检测到信标,则iBeacons.size()有时为有时是正常的。但它不应该总是为零。我不确定你是如何测试的,但是尝试添加一个Log.d(TAG, "Number of beacons detected: "+iBeacons.size());并让它运行以查看你是否得到一个非零数字。

答案 1 :(得分:1)

我建议您检查信标的uuid,主要和次要值,并使它们与您想要的区域匹配。

didRangeBeaconsInRegion应该返回一个阵列af beacon。

您可以使用“beecon”应用轻松更新值。

希望这可以帮到你。

问候。