我在我的 android 设备上使用 AltBeacon 示例应用程序 - altbeacon.org 提供的示例应用程序在这里:https ://github.com/AltBeacon/android-beacon-library-reference
但是,应用程序在启动时只检测并显示一个信标。我的 Android 设备附近有大约 5 个信标。如何检测所有信标?
在 RangingActivity.java 中,我注意到当信标出现时会调用这个方法:
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
EditText editText = (EditText) RangingActivity.this.findViewById(R.id.rangingText);
Beacon firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
}
}
}
我修改了迭代器以在 while 循环中从集合中读取,如下所示:
Beacon firstBeacon;
while(beacons.iterator().hasNext()){
firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
}
但是,应用程序会因此修改而崩溃。
我的问题:
(1) 如何显示我的 Android 设备附近的所有信标?
(2) 如何检测超出区域的信标?