Obtener la velocidad actual de Internet (móvil y Wifi) con Android

Tengo una aplicación que tiene que trabajar en modo offline y en línea. La aplicación tiene que hacer las peticiones al servidor de la aplicación basadas en la velocidad del Internet de la conexión de red actual (Wifi o datos).

Si Wifi está conectado, puedo obtener la intensidad de la señal Wifi de la conexión actual usando este código.

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int level = wifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5); 

O

 wifiInfo.getLinkSpeed(); 

Si el Internet móvil está conectado, pude conseguir la fuerza del singal usando la clase del oyente

 @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); int obj = signalStrength.getGsmSignalStrength(); int dBm = (2 * obj) -113; } 

Los códigos anteriores obtienen la intensidad de la señal, no la velocidad. Entonces, ¿cómo obtengo la velocidad actual de la red conectada?

Normalmente, las aplicaciones de prueba de velocidad que se encuentran en las tiendas o sitios web comprueban la velocidad enviando o descargando un archivo específico o haciendo ping a un servidor remoto y luego calculando la velocidad utilizando el tiempo transcurrido.

Esta función de carga / descarga o de ping no es compatible con el servidor de aplicaciones con el que estoy comunicando, por lo que no puedo utilizarlo.

Por lo tanto, ¿hay alguna manera alternativa para comprobar la velocidad de la conexión a Internet actual que se puede hacer en tiempo real?

Cualquier pista podría ser útil.

PS: Este enlace tiene el código para comprobar el tipo de conectividad de la red actual. Pero hay casos en los que tengo una señal LTE con plena fuerza, pero no / muy lenta conexión a Internet. Por lo tanto, esto también, no será una solución precisa para mí.

https://gist.github.com/emil2k/5130324

Gracias

  • Compartir credenciales Wifi a través de etiqueta NFC sin aplicaciones especiales
  • Android, cómo manejar el cambio en la red (de GPRS a Wi-fi y viceversa) mientras que el sondeo para los datos
  • Velocidad de análisis WiFi más rápida para obtener cambios rssi android
  • ¿Los dispositivos Android exploran * activamente * para redes WiFi?
  • No se puede conectar a un Wifi específico mediante programación en Android
  • Conecta el iPhone a Android Wifi Direct soft AP
  • UDP Multicasting desde el móvil a la PC
  • Wi-Fi Android punto de acceso - sin Internet
  • Construir una configuración Wifi desde un ScanResult o: Interpretar la cadena 'capabilities' de ScanResult
  • Android: Fuerza los datos que se envían a través de radio vs WiFi
  • Android móvil no detectar la red inalámbrica creada en mi portátil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.