android - tigo - La mejor forma de evaluar la velocidad de conexión
test de velocidad speedy (4)
¿Por qué no intentas cambiar tu visión de las cosas? Intenta fluir con tus usuarios. diga que su usuario desea descargar una canción de calidad de 128 kbit. inicia la descarga, MIENTRAS la descarga realiza un tiempo de descarga promedio, tome unos segundos para que este promedio se estabilice, y si está por debajo de cierto valor haga una ventana emergente para decirle al usuario que su conexión es demasiado lenta para el ancho de banda actual y pregunte él si para disminuir la calidad o para seguir descargando lentamente.
Esta voluntad:
- deje que los usuarios tengan la opción de asumir siempre que pueden obtener los mejores medios de calidad.
- permítanos hacer su chequeo en tiempo de ejecución y cambie la calidad de acuerdo con la descarga sin necesidad de verificar previamente.
- mantiene su aplicación simple para los usuarios.
Sé que no estoy respondiendo a su requisito específico, solo estoy ofreciendo una vista diferente.
Estoy desarrollando una aplicación que necesita para obtener archivos de música por streaming para tocar en vivo.
En la solicitud de canción api, puedo especificar el ancho de banda (por ej .: 50 kbps, 100 kbps, 300, 600 o 1 Mbps).
Cuanto más grande sea el ancho de banda, más tiempo obtendrá el archivo. Como no quiero que los usuarios tengan restricciones, tengo múltiples opciones para manejarlo:
Detecta si el teléfono está usando 3g, wifi o Edge y especifica un ancho de banda para cada velocidad de conexión.
Deje que el usuario decida la calidad de la canción que obtendrá: como youtube (pero los usuarios no serán personas que saben mucho sobre informática: cuanto más fácil sea el software, más se ajustará)
Tener una manera de evaluar correctamente la velocidad de conexión: como buscar un archivo, medir el tiempo que tomó y configurar el ancho de banda.
Sé que la velocidad de conexión podría variar mucho si el usuario pierde el wifi, o si usa 3g en la calle. Y el problema es que no puedo cambiar el ancho de banda cuando se reproducirá la canción.
¿Tal vez tienes experiencia que te gustaría compartir?
¡Gracias!
Facebook lanzó una biblioteca para esto:
https://github.com/facebook/network-connection-class
esto no existía en 2011 ...
Detecta el tipo de conexión de red en Android
Puede consultar todas las opciones disponibles aquí: http://developer.android.com/reference/android/telephony/TelephonyManager.html
Esto puede solucionar el tipo de red móvil, pero no puede ayudarte con la velocidad de Wifi, debes codificarla descargando algo de un servidor que conoces y calcula el tiempo.
Espero que ayude.
protected String doInBackground(String... urls) {
String response = "";
startTime = System.currentTimeMillis();
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
endTime = System.currentTimeMillis();
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
long dataSize = result.length() / 1024;
takenTime = endTime - startTime;
long s = takenTime / 1000;
double speed = dataSize / s;
Toast.makeText(context, "" + s + "kbps", Toast.LENGTH_SHORT).show();
}