2017-07-09 1 views
0

Ich mache ein Schulprojekt, bei dem ich alle Access Points, die ich in meiner Nähe finden kann, abrufen muss. Wenn ich die List mScanResultList bekomme, kann ich auf die Felder zugreifen, die ich brauche. Der Code-I-Tests bin, ist:Spezifische Netzwerkinformationen

for(ScanResult r : mResultList) { 
        Log.i(TEST, "BSSID: " + r.BSSID); 
        Log.i(TEST, "SSID: " + r.SSID); 
        Log.i(TEST, "Frequency: " + r.frequency); 
        Log.i(TEST, "Level: " + r.level); 
        Log.i(TEST, "Capabilities: " + r.capabilities); 
       } 

Meine Frage ist: r.level ein negativer Wert ist. Ich brauche diese Dezibelstärke, um sie in ungefähre Entfernung umzuwandeln. Sollte ich nur - (r.level) tun?

Zusätzlich muss ich den "Sicherheitstyp: WEP, WPA, Open ..." (unter Berufung auf die Projektaufgabe) kennen. Woher bekomme ich diese Informationen? Ich kann nicht verstehen, was r.capabilities bedeutet.

das Capabilities Feld eines Netzwerks Ich finde lautet:

Capabilities: [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS] 
+0

Benötigt das Schulprojekt wirklich Distanz oder nur den besten Kandidaten? – crchurchey

Antwort

0

Das Capabilities-Feld, um die Fähigkeiten des Access-Point (einschließlich Verschlüsselung) erzählt.

Ich weiß nicht, welche API Sie verwendet haben, um r.level zu bekommen, aber es könnte negativ oder positiv sein, abhängig vom verwendeten WLAN-Treiber. Normalerweise entspricht der Chip dem RSSI (https://en.wikipedia.org/wiki/Received_signal_strength_indication). Sie würden wahrscheinlich gut tun, um nur den absoluten Wert von r.level zu nehmen. Bedenken Sie auch, dass je näher r.level zu Null ist (egal ob negativ oder positiv), desto stärker das empfangene Signal ist. Um r.level der Distanz gleichzusetzen, müssen Sie einige Annahmen treffen und es wird nie genau sein.