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()
.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
gut dieser code ist in Ordnung mit mir, um zu informieren, WiFi Signalstärke, wenn es Veränderungen mit toast, so
Mein Receiver ist wie diese
dies ist, was in meinem start-up-Aktivitäten registrieren Receiver bekommen und Wifi-Info auf TextView
ich legte scroll-Ansicht auf TextView in XML-layout-Datei
und schließlich meine manifest wird wie folgt Aussehen
immer noch irgendwelche Schwierigkeiten haben, lass es mich wissen!
InformationsquelleAutor swiftBoy
Tun dies in Ihrer reciver--
Stellen eine Schnittstelle für die scan-Ergebnis und nennen es in Ihrer Aktivität wo immer Sie wollen, um es anzuzeigen...
Manifest Berechtigungen--
Hoffnung, so dass dies wird Ihnen helfen,...
startScan()
.Sie müssen rufen Sie startScan()...sonst wird es nie rufen Sie den scan-Empfänger......oder gilt eine Prüfung für die erste Zeit....wenn(_broadcastReciver==null){ rufen Sie Ihren reciver hier}
InformationsquelleAutor Hulk
Wenn Sie wollen einfach nur, um zu überwachen den aktuellen WLAN-Signalstärke können Sie verwenden
IntentFilter
mitWifiManager.RSSI_CHANGED_ACTION
, nicht dieWifiManager.SCAN_RESULTS_AVAILABLE_ACTION
InformationsquelleAutor forcelain