我正在我的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.我认为您需要使用一个For循环。像这样。
for (Beacon beacon : beacons) {
logToDisplay("The beacon " + beacon.toString() + " is about " + beacon.getDistance() + " meters away.");
}
对于2。我无法检测到该错误,但是可能会超时。所以要很有耐心。我认为可以更改“监视”活动中的代码以显示该消息。或者,您可以从设备查看logcat。一个简单的logToDisplay可以在BeaconReferenceApplication的didExitRegion部分内使用。
public void didExitRegion(Region region) {
if (monitoringActivity != null) {
monitoringActivity.logToDisplay("I no longer see a beacon in the "+region.getUniqueId());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句