Cómo puedo determinar la velocidad de Internet en mi aplicación Android

En mi aplicación quiero que cuando hago clic en un botón que me muestran la velocidad exacta de Internet. Había leído toda la respuesta sobre esta pregunta que se ha pedido ya en estos acoplamientos que determinan la velocidad del Internet en androide , calculando velocidad del Internet en androide , velocidad del Internet en la programación androide y así sucesivamente. Pero no encontré mi respuesta exactamente. Utilicé esto:

WifiInfo.getLinkSpeed ​​()

Pero muestra la velocidad máxima. Y también uso los códigos de esto:

TrafficStats

Pero no funcionó para mí. Necesito mostrar la velocidad de mi red (es decir, 100 kbps). ¿Cómo puedo hacer esto? Por favor, ayúdame.

Para determinar la velocidad de Internet en una aplicación de Android primero necesita descargar algún archivo de onlineserver. ¿Por qué necesitamos descargar el archivo? Para comprobar el promedio de velocidad de descarga de Internet.

Para eso necesitas codificar así

private class InternetSpeedTest extends AsyncTask<String, Void, String> { long startTime; long endTime; private long takenTime; @Override protected String doInBackground(String... paramVarArgs) { startTime = System.currentTimeMillis(); Log.d(TAG, "doInBackground: StartTime" + startTime); Bitmap bmp = null; try { URL ulrn = new URL(paramVarArgs[0]); HttpURLConnection con = (HttpURLConnection) ulrn.openConnection(); InputStream is = con.getInputStream(); bmp = BitmapFactory.decodeStream(is); Bitmap bitmap = bmp; ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream); byte[] imageInByte = stream.toByteArray(); long lengthbmp = imageInByte.length; if (null != bmp) { endTime = System.currentTimeMillis(); Log.d(TAG, "doInBackground: EndTIme" + endTime); return lengthbmp + ""; } } catch (Exception e) { e.printStackTrace(); } return null; } protected void onPostExecute(String result) { if (result != null) { long dataSize = Integer.parseInt(result) / 1024; takenTime = endTime - startTime; double s = (double) takenTime / 1000; double speed = dataSize / s; Log.d(TAG, "onPostExecute: " + "" + new DecimalFormat("##.##").format(speed) + "kb/second"); } } 

En este código se descargará una imagen de aquí

En doInBackground se calcula el tamaño de la imagen después de la descarga completada aquí

 Bitmap bitmap = bmp; ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream); byte[] imageInByte = stream.toByteArray(); long lengthbmp = imageInByte.length 

Y lo último es calcular tomados por tiempo restando la hora de inicio del formulario de tiempo de fin y la velocidad es (size / takenTime)

Espero que te funcione

WifiInfo.getLinkSpeed ​​le dará la velocidad máxima de su red wifi actual. Su velocidad wifi real será inferior a este valor, dependiendo de lo lejos que esté del punto de acceso, los obstáculos, las interferencias, … Esta es su velocidad dentro de su red wifi. Si accede a un dispositivo dentro de su red, la transferencia será el mínimo entre su velocidad y la velocidad del otro dispositivo.

Si accede a Internet, su red wifi está conectada a Internet y su velocidad dependerá de la tecnología utilizada (ADSL, cable, 4G, satélite, …) y de la capacidad de su proveedor de Internet (que está al otro lado De su conexión). Ambos valores suelen cambiar en el tiempo, ya que dependen de los patrones de uso (número de usuarios simultáneos, la capacidad de la red, ..)

También tenga en cuenta que, cuando está conectado a Internet, realiza peticiones a otro dispositivo (la mayoría de las veces a un servidor). La velocidad de transferencia que obtendrá será el mínimo entre su velocidad y la del servidor al que está contactando.

Con todo, hay demasiados elementos desconocidos para predecir su velocidad de Internet.

Sin embargo, siempre se puede calcular, simplemente hacer algunas peticiones, medir cuántos Kbytes (o Megabytes) obtendrá, calcular cuánto tiempo ha tomado y dividir uno por el otro. Esta será la velocidad actual para esa conexión en particular.

Si desea valores más estables / confiables, debe repetir esta operación varias veces y usar el promedio. Esto es lo que hacen los probadores de velocidad (www.speedtest.net, testmy.net, …).

Para comprobar la calidad de la conexión a Internet de calidad y tráfico. Esta biblioteca puede ayudarte.

Facebook – Clase de conexión de red

Clase de conexión de red es una biblioteca de Android que le permite averiguar la calidad de la conexión de Internet del usuario actual. La conexión se clasifica en varias "clases de conexión" que hacen que sea fácil de desarrollar en contra. La biblioteca lo hace escuchando el tráfico de Internet existente realizado por su aplicación y notificándole cuándo cambia la calidad de conexión del usuario. Los desarrolladores pueden utilizar esta información de la clase de conexión y ajustar el comportamiento de la aplicación (solicitar imágenes de baja calidad o video, tipo de acelerador por delante, etc.).

  • ¿Cómo ser notificado cuando un compañero ya no está disponible en la gama Wi-Fi Direct?
  • SecurityException al obtener los resultados de la exploración Wifi
  • ¿Por qué WifiConfiguration.BSSID siempre es nulo?
  • Cómo determinar mediante programación si android está conectado a wifi?
  • Android M: no se puede quitar Wi-Fi AP programáticamente
  • Escanear Wi-Fi de Android: Filtrar impresoras de ScanResult
  • Obtener el protocolo Wi-Fi (802.11a / b / g / n) mediante programación
  • Exploración de señales wifi sólo en banda 2.4Ghz
  • Determine el ancho de banda de conexión de red (velocidad) wifi y datos móviles
  • Android WifiLock WIFI_MODE_SCAN_ONLY no funciona
  • Cómo obtener la dirección IP del router wifi conectado en android mediante programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.