Erhalten WiFi-Signalstärke des Verbundenen Netzwerk

Ich versuche, die Anzeige der Signalstärke des verbundenen WLAN-Netz in meiner Android app. Ich habe versucht, die folgenden:

//Receiver for information on the network info
private BroadcastReceiver mNetworkReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Log.d("INFO", "onReceive()");
        List<ScanResult> scanResult = mWifi.getScanResults();
        for(ScanResult scan : scanResult)
        {
            Log.d("INFO","Network strength: " + String.valueOf(scan.level) + " dBm " + scan.SSID);
        }
    }   
};

Und dann Mach ich die Anmeldung/Registrierung von meinem receiver auf die onResume()/onPause():

@Override
public void onResume()
{
    super.onResume();
    mActivity.registerReceiver(mNetworkReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); //network info
}

@Override
public void onPause()
{
    super.onPause();
    mActivity.unregisterReceiver(mNetworkReceiver);
}

Aber das scheint nicht zu funktionieren. Ich habe auch die ACCESS_WIFI_STATE Berechtigung aktiviert. Mein receiver wird nur aufgerufen, wenn ich den Anruf <WiFiManager>.startScan() manuell, aber ich bin versucht, es zu erhalten, um die Arbeit mit dem broadcast receiver, so dass ich immer zeigen die Signalstärke, wenn es geändert. Ich bemerkte, dass die onReceive() stellt eine Liste auf, die unnötig ist, wenn ich nur möchte das angeschlossene Netzwerk-Statistiken. Irgendeiner Weise zu ändern, die zu?

edit: Auch, ich weiß, dass es einige Fragen dazu, aber die, die ich gelesen habe, waren nicht allzu hilfreich.
edit2: Geklärt meine Frage ein bisschen. Das Hauptproblem ist, dass mein receiver wird nie aufgerufen, es sei denn, ich nenne startScan().

Sie sind auf jeden Fall barking up the right tree mit WifiManager: aber was ist mit "calculateSignalLevel()" etc: developer.android.com/reference/android/net/wifi/...
Ich würde nicht brauchen, dass mein broadcast receiver? Jetzt mein receiver gar nicht aufgerufen wird, wenn ich manuell eine startScan(). Sollte nicht mein receiver jedesmal aufgerufen, wenn sich die Signalstärke ändert?
so Sie wollen sich informieren über die Wi-Fi-Signalstärke beim app-start ausgeführt.. mit BReceiver?? klar mich, wenn ich falsch bin, habe ich dies getan.wir lösen dein prob
Ja. Also, wenn meine app läuft, wird die Anzeige der aktuellen Netzwerk-Stärke, ähnlich wie die Anzahl der bars Wechsel an der Spitze des Telefons, der angibt, der Stärke.
okay, lassen Sie mich zu ändern mein code snap nach Ihrem Bedarf,und lassen Sie mich wissen, wenn es hilfreich für Sie

InformationsquelleAutor trevor-e | 2012-07-09

Schreibe einen Kommentar