作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的 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) 如何检测出区域外的信标?
最佳答案
For 1.我认为你需要使用For循环。像这样。
for (Beacon beacon : beacons) {
logToDisplay("The beacon " + beacon.toString() + " is about " + beacon.getDistance() + " meters away.");
}
对于 2。我在检测时遇到了问题,但这可能是一个很长的超时。所以要非常耐心。我认为可以更改 Monitoring Activity 中的代码以显示一条消息。或者您可以从设备查看 logcat。 可以在 BeaconReferenceApplication 的 didExitRegion 部分中使用一个简单的 logToDisplay。
public void didExitRegion(Region region) {
if (monitoringActivity != null) {
monitoringActivity.logToDisplay("I no longer see a beacon in the "+region.getUniqueId());
}
}
关于android - 如何使用 Altbeacon android 库检测多个信标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129008/
我是一名优秀的程序员,十分优秀!