Sonntag, Dezember 15, 2019

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.
InformationsquelleAutor user198530 | 2016-02-22

1 Kommentar

  1. 1

    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

    • speed-test download
    • speed-test upload
    • download /upload-Fortschritt zu überwachen
    • konfigurierbare hostname /port /uri (Benutzername & Passwort für den FTP -)
    • konfigurierbare socket timeout und chunk-Größe
    • konfigurieren, Datei hochladen-Speicher

    Gradle:

    compile 'fr.bmartel:jspeedtest:1.32.1'

    Beispiel-Code:

    SpeedTestSocket speedTestSocket = new SpeedTestSocket();
    
    //add a listener to wait for speedtest completion and progress
    speedTestSocket.addSpeedTestListener(new ISpeedTestListener() {
    
        @Override
        public void onCompletion(SpeedTestReport report) {
            //called when download/upload is complete
            System.out.println("[COMPLETED] rate in octet/s : " + report.getTransferRateOctet());
            System.out.println("[COMPLETED] rate in bit/s   : " + report.getTransferRateBit());
        }
    
        @Override
        public void onError(SpeedTestError speedTestError, String errorMessage) {
             //called when a download/upload error occur
        }
    
        @Override
        public void onProgress(float percent, SpeedTestReport report) {
            //called to notify download/upload progress
            System.out.println("[PROGRESS] progress : " + percent + "%");
            System.out.println("[PROGRESS] rate in octet/s : " + report.getTransferRateOctet());
            System.out.println("[PROGRESS] rate in bit/s   : " + report.getTransferRateBit());
        }
    });
    • nicht arbeiten, nicht in jedem Zustand

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...