如何使用Altbeacon android库检测多个信标?

我在我的 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());
    }
}

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...