2017-03-15 4 views
0

私はWi-Fiリストをソートできません。Wi-Fi SSIDが重複しているので、強度の高い固有のSSIDのリストを取得します。あなたは私の次のコードを見ることができますが、正しい無線LANのリストを取得していません。ここで鍵がString SSIDになりますHashMapを使用してAndroid Wi-Fiでユニークな高性能の完全なWiFiリストを並べ替えるにはどうすればいいですか?

List<ScanResult> results = mWifiManager.getScanResults(); 

    int size = results.size(); 
    try { 
     for (int i = 0; i < results.size() - 1; i++) { 
      for (int k = i + 1; k < results.size(); k++) { 
       if (results.get(i).SSID.equals(results.get(k).SSID)) { 
        if (results.get(k).level > results.get(i).level) { 
         results.remove(i); 
        } else { 
         results.remove(k); 
        } 
       } 
      } 
     } 
    } catch (Exception e) 

    { 
     e.printStackTrace(); 
    } 

答えて

0

マージScanResults。それでも、その後Listインタフェースを使用したい場合は

List<ScanResult> results = mWifiManager.getScanResults(); 
HashMap<String, ScanResult> filtered = new HashMap<String, ScanResult>(); 
for(ScanResult sc : results){ 
    ScanResult prevScanResultOrNull = filtered.get(sc.SSID); 
    // compare lever with previous ScanResult, 
    // insert bigger value under SSID key, they are same 
    if(prevScanResultOrNull!=null) 
     filtered.put(prevScanResultOrNull.SSID, // or sc.SSID, whatever 
      prevScanResultOrNull.level > sc.level ? 
       prevScanResultOrNull : sc); 
    // no SSID in HashMap, so just put as highest value 
    else 
     filtered.put(sc.SSID, sc); 
} 

EDIT2:直前(反復で)ScanResultを追加したの有無のチェックを追加し、その後、両方のlevel

編集を比較

results = new ArrayList<ScanResult>(filtered.values()); 
+0

私はあなたを得ていませんでした。 – Nayank

+0

私の編集をチェックアウト – snachmsm

関連する問題