Android 信标测光排序阵列

Android 信标测光排序阵列,android,arrays,sorting,ibeacon,Android,Arrays,Sorting,Ibeacon,我没有什么好玩的灯塔。我想把它们列在rssi的视图上。所以基本上,它们会根据接收器和信标之间的距离在一段时间内(例如每10秒)改变列表中的位置。。 更好的方法是使用sqllite并保存地址信标和直接rssi,然后对它们进行排序,或者在某个数组中执行此操作? 在我的示例中,是否有某种方法可以对数组中的项目进行排序,信标的地址取决于rssi?使用数组,因为数据寿命很短,所以数据库开销不值得。然后使用Collections.sort(List,Comparator)在Comparator中比较单个优势

我没有什么好玩的灯塔。我想把它们列在rssi的视图上。所以基本上,它们会根据接收器和信标之间的距离在一段时间内(例如每10秒)改变列表中的位置。。 更好的方法是使用sqllite并保存地址信标和直接rssi,然后对它们进行排序,或者在某个数组中执行此操作?
在我的示例中,是否有某种方法可以对数组中的项目进行排序,信标的地址取决于rssi?

使用数组,因为数据寿命很短,所以数据库开销不值得。然后使用
Collections.sort(List,Comparator)
Comparator
中比较单个优势。要每10秒运行一次,请使用
处理程序
postDelayed

使用,您可以使用以下代码按RSSI对远程信标进行排序:

public void didRangeBeaconsInRegion(final Collection<Beacon> beacons, Region region) {
    ArrayList<Beacon> sortedBeacons = new ArrayList<Beacon>(beacons);
    Collections.sort(sortedBeacons, new Comparator<Beacon>() {

        @Override
        public int compare(Beacon beacon0, Beacon beacon1) {
            return new Integer(beacon0.getRssi()).compareTo(new Integer(beacon1.getRssi()));
        }

    });

    // Add code here to update display with sortedBeacons
}
public void didrangebeaconregion(最终收集信标,Region){
ArrayList sortedBeacons=新的ArrayList(信标);
Collections.sort(sortedBeacons,newcomparator(){
@凌驾
公共整数比较(信标信标0、信标信标1){
返回新整数(beacon0.getRssi()).compareTo(新整数(beacon1.getRssi());
}
});
//在此处添加代码以使用sortedBeacons更新显示
}

我使用Android信标库,但在您的示例中,我不知道为什么sortedBeacons中总是只有一个信标?如果
sortedBeacons
ArrayList
中只有一个信标,那么这意味着信标集合中只有一个信标传递到
DidRangeBeaconsisnRegion
方法。这表明您只有一个与您定义的
区域相匹配的可见信标。
好的,我想我找到了问题所在。我的信标只有不同的名称(字符串),所以在数组中他只显示一个位置,我不知道为什么?每个信标都有不同的mac地址。当我改变每个信标的次要值时,它们就会出现。但是排序不起作用。我的计划是让信标有不同的名称和相同的rest值。是否可能,或者每个信标必须具有不同的次要值或主要值才能获得排序?在Android信标库的更高版本2.3中,您可以设置
信标。setHardwareEqualityEnforced(true)这将导致具有不同mac地址的广告被视为不同的信标。如果未设置此选项,则默认行为是两个发送相同标识符的硬件设备被视为单个信标。