我正在尝试使用特定的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自己的应用程序来检测信标,并且工作正常,我可以看到所有这些,所以它似乎不是我设备上的蓝牙问题
答案 0 :(得分:2)
一些提示:
仔细检查您的BEACON_UUID和BEACON_MAJOR对于正在传输的信标是否正确。对于测试,尝试将这两个设置为暂时为空,直到它工作,然后您可以将它们设置回您拥有的值。
如果在给定周期中没有检测到信标,则iBeacons.size()有时为有时是正常的。但它不应该总是为零。我不确定你是如何测试的,但是尝试添加一个Log.d(TAG, "Number of beacons detected: "+iBeacons.size());
并让它运行以查看你是否得到一个非零数字。
答案 1 :(得分:1)
我建议您检查信标的uuid,主要和次要值,并使它们与您想要的区域匹配。
didRangeBeaconsInRegion应该返回一个阵列af beacon。
您可以使用“beecon”应用轻松更新值。
希望这可以帮到你。
问候。