我在我的
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.我在检测时遇到问题,但这可能是一个很长的超时.所以要非常耐心.我认为可以更改Monitoring活动中的代码以显示该消息.或者您可以从设备查看logcat.
可以在BeaconReferenceApplication的didExitRegion部分中使用简单的logTodisplay.
public void didExitRegion(Region region) { if (monitoringActivity != null) { monitoringActivity.logTodisplay("I no longer see a beacon in the "+region.getUniqueId()); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。