Android WLAN nicht die SSID und BSSID von ScanResult
Ich habe diesen code, den ich Scannen möchte, für die Netze, und dann schreiben Sie alle in die listview. Aber das problem ist, dass die ssid und bssid nicht zeigen. Alles andere zeigt aber nicht die ssid.
Auch, was ist der beste Weg zur Aktualisierung der listview, in jeder Sekunde, so können Sie die signal-Stärke tatsächliche signal?
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.example.wifi.R;
public class MainActivity extends Activity {
WifiManager wifiManager;
WifiScanReceiver wifiReciever;
ListView list;
String wifis[];
WifiInfo wifiInfo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.text);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
wifiInfo = wifiManager.getConnectionInfo();
wifiManager.startScan();
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = wifiManager.getScanResults();
wifis = new String[wifiScanList.size()];
for (int i = 0; i < wifiScanList.size(); i++) {
wifis[i] = ((wifiScanList.get(i)).toString());
}
list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, wifis));
}
}
}
- wenn u haben networkConfig-Objekt kann u seine ssid
- verwenden
wifiInfo.getSSID();
- ja ich weiß, aber das scannt alle Netze, also wenn ich "wifiInfo.getSSID();" bekomme ich nur die 1 wifi name im verbunden zu anstatt die Namen aller Netzwerke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
SSID
undBSSID
von derScanResult
Objekt mitwifiScanList.get(i).SSID
undwifiScanList.get(i).BSSID
. Dann fügen Sie einfach es zu den anderen Daten zurückgegeben, die vontoString()
.Sehen Dokumentation Hier.
Deklarieren Sie zunächst Ihre
ArrayAdapter
als Instanz-variable, und rufen SiesetAdapter()
imonCreate()
:Geändert
BroadcastReceiver
:Diese nur noch aktualisieren, die auf jedes scan-Ergebnis. Ich glaube nicht, dass es ' s empfohlen, das update ein
ListView
jede Sekunde, möchten Sie vielleicht überdenken Sie Ihren Ansatz für das zeigen von RSSI-Niveaus. Könnten Sie ein auf-klicken Sie für jede SSID, und haben eine Detailansicht mitTextView
wo Sie aktualisieren die RSSI jede Sekunde die aktuelle SSID.toString()
, und nur extrahieren Sie die Daten, die Sie benötigen, aus derScanResult
Objekt. Werfen Sie einen Blick auf die Dokumentation in dem link.