我一直在研究如何基于信号强度(在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
}
答案 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());