2012-08-03 14 views
12

Estoy trabajando con una aplicación que contiene elementos del servicio web.Cálculo de la velocidad de Internet en android

En eso necesito saber el estado cuando la velocidad de Internet es baja. ¿Cómo encontrar el nivel de velocidad de Internet en Android?

Por ejemplo, considere si estoy usando una conexión de 2Mbps en mi teléfono celular y cuando se ralentiza a 50Kbps necesito notar esa situación haciendo un Toast o Alerta.

Gracias.

+0

esto puede ayudar a http://stackoverflow.com/questions/4429605/how-to-get-link-speed-programmatically – Calvin

Respuesta

11

Si está conectado a WiFi se puede encontrar la velocidad de la conexión usando WifiManager:

WifiInfo wifiInfo = wifiManger.getConnectionInfo(); 

y después de la WifiInfo se puede obtener la velocidad actual:

int speedMbps = wifiInfo.getLinkSpeed(); 

Si está en 3G, no creo que haya una forma estándar de averiguarlo, quizás pueda asumir automáticamente que 3G es lento.

+2

De cualquier forma, gracias, pero igual estoy buscando la velocidad de Internet no solo en wifi sino también en 3G, 2G. – Dhamodharan

+2

Esta respuesta es incorrecta, no es posible obtener su velocidad de Internet de esta manera ya que está determinada por su ISP, no su adaptador WiFi o enrutador – mittelmania

+0

No hay 'biblioteca Android 'que proporcione la velocidad de la red. 'wifiInfo.getLinkSpeed' proporciona la velocidad máxima de la red solamente, que sigue cambiando de vez en cuando. –

6

No hay una solución estable para esto, pero encontré this código fuente de la aplicación que podría ayudarle a obtener la velocidad de Internet.

+4

Link no funciona. Es por eso que deberías publicar el código en tu respuesta. – pomber

0

Ésta es specilally para detectar la velocidad de conexión a Internet por facebook sdk

ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality(); 
+0

Siempre devuelve DESCONOCIDO. –

+0

Ronak tiene razón. La lib no funciona más – YingYang

+0

Esto siempre devuelve un valor desconocido – surya

0

Este es el código para conseguir la velocidad de su conexión a Internet mientras está conectado a Wi-Fi.

WifiManager wifiManager = (WifiManager) 
    this.getSystemService(Context.WIFI_SERVICE); 

List<ScanResult> wifiList = wifiManager.getScanResults(); 
for (ScanResult scanResult : wifiList) { 
    int level = WifiManager.calculateSignalLevel(scanResult.level, 5); 
    String net=String.valueOf(level); 
    // Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show(); 

} 

// Level of current connection.here rssi is the value of internet speed whose value 
// can be -50,-60 and some others,you can find the speed values easily on internet. 

int rssi = wifiManager.getConnectionInfo().getRssi(); 
int level = WifiManager.calculateSignalLevel(rssi, 5); 
String net=String.valueOf(rssi); 
Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show(); 

// -100 is the minimum speed value of your internet. 
if(rssi < -100) { 
    slowInternet=false; 
} 
Cuestiones relacionadas