如何根据信号从WifiManager排序ScanResult?

时间:2019-06-14 01:53:22

标签: android sorting android-wifi wifimanager

我一直在研究如何基于信号强度(在WifiManager库中称为start_of_week = date_sample - timedelta(days=date_sample.isoweekday()%7) )对列表进行排序的stackoverflow。我看到您可以使用函数level。但是,我对我想通过Collection.sort()对列表进行排序的事实感到困惑,其中最高的数字在开头,最低的数字在底部。

如您所见,它在每个对象中返回一些信息: https://developer.android.com/reference/android/net/wifi/ScanResult.html 我没有那么高级,但是我知道我可以通过执行类似的操作来进入关卡

level

for (int i=0; i < scanList.size(); i++) {
    System.out.println(scanList.get(i).level); // Prints the level for each access point
}

1 个答案:

答案 0 :(得分:0)

您需要将comparison logic传递给Collection sort

class Signal_Strength_Comparator implements Comparator<ScanResult> {
    @Override
    public int compare(ScanResult scan0, ScanResult scan1) {
        return scan0.level-scan1.level;
    }
}

现在将其传递给Collection.sort:

WifiManager myWifiManager;
myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
myWifiManager.startScan();
List<ScanResult> scanList = myWifiManager.getScanResults();
Collections.sort(scanList,new Signal_Strength_Comparator());