我在我的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)如何检测出区域外的信标?
1 回答
对于1.我认为你需要使用For循环 . 像这样 .
对于2.我在检测时遇到了问题,但可能需要很长时间 . 所以要非常耐心 . 我认为可以更改Monitoring活动中的代码以显示该消息 . 或者您可以从设备查看logcat . 可以在BeaconReferenceApplication的didExitRegion部分中使用简单的logToDisplay .