android - 如何根据信号对 WifiManager 中的 ScanResult 进行排序?
问题描述
我在 stackoverflow 上查看如何根据信号强度对列表进行排序(level
在 WifiManager 库中引用)。我看到你可以使用这个功能Collection.sort()
。但是,我很困惑我想通过 对列表进行排序这一事实level
,其中最高数字在开头,最低数字在底部。
如您所见,它在每个对象中返回了一些内容: https ://developer.android.com/reference/android/net/wifi/ScanResult.html 我不是那么先进,但我知道我可以通过执行访问该级别像这样的东西
for (int i=0; i < scanList.size(); i++) {
System.out.println(scanList.get(i).level); // Prints the level for each access point
}
WifiManager myWifiManager;
myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
myWifiManager.startScan();
List<ScanResult> scanList = myWifiManager.getScanResults();
Collections.sort(scanList);
解决方案
您需要将比较逻辑传递给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());
推荐阅读
- vba - VBA 计数错误 1004
- azure - 如何获取 Azure 通知中心注册的注册或更新日期?
- go - Yocto Build 无法在 InfluxDB 的 Bitbake 配方中执行“go get”命令
- c - 如何检查特定数据类型的输入?
- json - 无法从 START_ARRAY 反序列化“com.dto.Consumption”的实例
- maven - 使用 jfrogcli 时使用自定义 maven 存储库
- accessibility - 如何在不将焦点转移到每个搜索词上的情况下,让 Assistive Technology 可读的搜索词出现?
- google-bigquery - BIgQuery AVRO 外部表架构
- excel - 将鼠标移入文本框或组合框时使单位可见
- python - python中协方差的置信区间