Holen Sie sich die aktuelle Geschwindigkeit des internet (mobile & Wifi) mit Android
Habe ich eine app, arbeiten, offline-und online-Modus. Die Anwendung muss die Anforderungen an den app-server auf der Basis der internet-Geschwindigkeit von der aktuellen Netzwerkverbindung (Wifi oder Daten).
Wenn Wifi verbunden ist, kann ich die Wifi-Signalstärke der aktuellen Verbindung mit diesem code.
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
ODER
wifiInfo.getLinkSpeed();
Wenn das mobile internet angeschlossen ist, ich war in der Lage, die singal Stärke mit Hilfe der listener-Klasse
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int obj = signalStrength.getGsmSignalStrength();
int dBm = (2 * obj) -113;
}
Den oben genannten codes wird die Signalstärke, nicht die Geschwindigkeit. So, wie bekomme ich die aktuelle Geschwindigkeit des Netzwerkes?
Normalerweise ist der speed-test-apps finden sich in den Läden oder websites überprüfen Sie die Geschwindigkeit durch die Zusendung oder das herunterladen einer bestimmten Datei oder Ping einem remote-server und dann die Berechnung der Geschwindigkeit mit der verstrichenen Zeit.
Diese upload - /download-oder Ping-Funktion wird nicht unterstützt von der app-server, mit denen ich kommuniziert, ich bin also nicht in der Lage zu verwenden.
So, gibt es irgendeine alternative Möglichkeit zu prüfen, die Geschwindigkeit der aktuellen internet-Verbindung, die getan werden kann, in Echtzeit?
Führt, könnte hilfreich sein.
PS: Dieser link hat den code für die überprüfung der Konnektivität Typ des aktuellen Netzwerks. Aber es gibt Fälle, in denen ich eine LTE-signal mit voller Stärke, aber keine/sehr langsame internet-Verbindung. So, das ist auch nicht eine genaue Lösung für mich.
https://gist.github.com/emil2k/5130324
- stackoverflow.com/a/4430334/4824159 Kann Ihnen helfen
- Der Grund, warum Menschen verwenden Sie Ping ist, denn es gibt keinen anderen Weg, um genau zu sein. Einen link kann die Unterstützung bis zu 100 Mbit / s, aber Sie können möglicherweise nur um 2 aufgrund von überlastung. Der einzige Weg, zu wissen, dass ist zu berechnen. Es ist auch nicht hilfreich zu wissen, dass Ihre Verbindung unterstützt zu 100 Mbit / s foo.com wenn Sie treffen wollen bar.com das überlastet ist und nur in der Lage zu unterstützen, 10. Eine andere Methode wird eine Annäherung sein.
- gefunden ein nützliches medium-Artikel. haben Sie einen Blick android.jlelse.eu/...
- Haben Sie versuchen Sie dieses Beispiel : github.com/bertrandmartel/speed-test-lib
- Mehta Nicht. Ich habe nicht versucht, die Probe. Ohne pings auf jedem server, in meinem Verständnis, es gibt keine Möglichkeit zu überprüfen, für die Konnektivität Geschwindigkeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie keine Download - /Upload-Geschwindigkeit ohne Ping alle server. Als server doesn ' T support ping können Sie die Verwendung von third-party-Ping-Website.
Mit JSpeedTest Bibliothek können Sie es leicht tun. Einige der gewünschten Funktionen sind in dieser Bibliothek. Wie
Gradle:
Beispiel-Code: