doppelte SSID-scanning-wifi-Ergebnis
ich versuche eine app machen können, erstellen Sie eine Liste der verfügbaren WLAN-access-point. hier ist ein Teil der code, den ich verwendet:
x = new BroadcastReceiver()
{
@Override
public void onReceive(Context c, Intent intent)
{
results = wifi.getScanResults();
size = results.size();
if (results != null) {
for (int i=0; i<size; i++){
ScanResult scanresult = wifi.getScanResults().get(i);
String ssid = scanresult.SSID;
int rssi = scanresult.level;
String rssiString = String.valueOf(rssi);
textStatus.append(ssid + "," + rssiString);
textStatus.append("\n");
}
unregisterReceiver(x); //stops the continuous scan
textState.setText("Scanning complete!");
} else {
unregisterReceiver(x);
textState.setText("Nothing is found. Please make sure you are under any wifi coverage");
}
}
};
beide textStatus und fusszeilenstatus Textstatus ist ein TextView.
bekomme ich diese zu arbeiten, aber manchmal das Ergebnis zeigt doppelte SSID aber unterschiedliche Signalpegel, die in einem scan. es gibt vielleicht 3-4 gleiche SSID aber unterschiedliche Signalpegel.
ist es wirklich unterschiedliche SSIDs und was unterscheidet Sie? kann das jemand erklären?
Für Passanten : ändern
size = results.size(); if (results != null) {
zu if (results != null) { size = results.size();
InformationsquelleAutor randms26 | 2013-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie mehrere router-modems für den gleichen Netzwerk? Zum Beispiel: Ein Unternehmen hat ein großes wireless-Netzwerk mit mehreren router-modems installiert, die in mehreren Orten, so dass jedes Zimmer hat Wifi. Wenn Sie das tun, scan, erhalten Sie eine Menge Ergebnisse mit der gleichen SSID, aber mit verschiedenen acces-points und damit unterschiedliche Signalpegel.
BEARBEITEN:
Nach Walt ' s Kommentar Sie können auch mehrere Ergebnisse, obwohl er nur einen access point, wenn Ihr modem dual-band.
Ja, BSSID macht den Unterschied, wenn ich mich richtig erinnere. Für immer diese überprüfen: ScanResult-API. Oder in anderen Worten: String bssid = scanresult.BSSID, wie Sie es mit "ssid"
okay, ich werde versuchen so schnell wie möglich wieder ein und bestätigen Sie das Ergebnis
Wenn Ihre app nur das Scannen verfügbaren wifi-Netzwerke, die Sie betrachten können alle Access-Points als im gleichen Netzwerk. Sie können etwas tun, wie eine HashMap<String, int>. Für jeden scan könnten Sie legen Sie die SSID in das Feld Schlüssel ein, und sein Pegel in das Feld Wert dieser hashmap. Wenn die SSID wird in der HashMap bereits, vergleichen Sie die Signalpegel, und ersetzen Sie es mit dem besseren Wert. Also mit dieser hashmap Sie können die Ergebnisse erhalten Sie mit nur einer SSID und das beste signal-Ebene unter die mehrere Access-Points
Dies scheint auch der Fall zu sein, wenn ein wireless access point ist ein dual-band. Ich sehe es auf meinem home-router und es gibt einen einzigen access point.
InformationsquelleAutor DuKes0mE
folgenden code verwenden, um zu entfernen, doppelte ssids mit der höchsten Signalstärke
ScanResult updateItem = mItems.get(position);
da es nichts gibt, das garantiert, dass ein Element an dieser position, es sei denn, Sie tunmItems.add(result, position);
InformationsquelleAutor vikoo