Red de conocimientos turísticos - Lugares de interés turístico - ¿Cómo medir la velocidad actual de la red en el desarrollo de Android?

¿Cómo medir la velocidad actual de la red en el desarrollo de Android?

Principio: busque una URL de apk descargable en Internet y recuerde que el apk no debe ser demasiado grande. Generalmente 1M es suficiente. Luego, calcule la velocidad actual de la red registrando el tiempo y el tamaño de la descarga de esta aplicación. Por supuesto, una URL no es muy precisa; si solicita precisión, puede descargar más.

URL promedio

Envoltura com.panodic.settings.net;

Importar Java.io.bufferedreader;

Importar Java. .archivo;

importar Java .io .excepción de archivo no encontrado;

Importar Java .io .excepción de archivo. ;

Importar Java.io.inputstream;

Importar Java.io.inputstreamreader;

Importar Java.net.httpurlconnection;

Importar Java.net.malformedurexception;

Importar Java.net.URL;

Importar conexión Java.net.URL;

Importar configuración de com.pano DIC. .util.logutil;

Importar com.pano DIC.settings.util.netutil;

Importar com.pano DIC.settings.util.util;

Importar elemento com.pano DIC.settings.view.patch;

Importar Android.OS.bundle;

Importar Android.OS.handler;

Importar Android .OS.message;

Importar Android.app.activity;

Importar Android.view.menu;

Importar Android.view.view;

Importar vista de Android.

Botón Importar widget de Android. Android.widget.progressbar;

Importar Android.widget.textview;

Importar Android.widget.toast;

Importar com.pano DIC. ;

La clase pública MesureSpeed ​​​​extiende la actividad implementa OnClickListener {

Int final estático privado LOADING = 0x 111;

Int final estático privado STOP = 0x 112 ;

Progreso privado mProgressState;

privado int mProgressState

TextView privado mSpeed

Botón privado medir velocidad;

Private PatchItem mBack

Flotador privado mSpeedContent

Cadena privada mAddr = ".

lgx. experto telefónico_221804. apk";

cadena privada maddr 2="/data/wise game/6f 9153 D4 a8d 1f7d 8/QQ apk";

cadena privada maddr 3="/data/. juego sabio/Baidu search_Android_10189_1399k.apk";

Manejador privado mHandler = new Handler(util.staskrunner.get looper());

privado int testCount = 0;

@override

protected void onCreate(Paquete de estado de instancia guardado) {

super .oncreate(savedInstanceState);

requestWindowFeature(Window.Feature número de título );

setContentView(r.layout.activity_mesure_speed);

m velocidad = (TextView)findViewById(r.id. velocidad _ contenido

mMeasureSpeed); ​​= (Botón) findViewById (r . id . me sure _ speed);

m back = (elemento de parche) findViewById (r . id . patch _ settings _ net _ speed

mBar = (barra de progreso) findViewById (r . id . bar);

mmeasuespeed .setonclicklistener (this);

m back .setonclicklistener(this);

p>

recuento de pruebas = 0;

}

@override

public void onClick(view v ) {

if (m atrás. es mi hijo (v)) {

util terminar (esto

} else if (v = = mMeasureSpeed ​​​​) {

mmeasespeed .set habilitado (falso);

mBar.setVisibility (ver.

visible);

mProgressState = 0;

recuento de pruebas = 0;

mbar . eliminar devoluciones de llamada (nulo);

mhandler.post retrasado(new Runnable(){

@override

public void runnable(){

Velocidad de medición (mAddr);

}

}, 0);

}

}

Manejador privado mProgressHandler = new Handler() {

@override

public void handleMessage(mensaje de mensaje) {

switch(message.content){< / p>

Boxeo:

mbar.set progreso(mProgressState);

Rotura;

Caso detenido:

mBar. setVisibility(view.gone);

setSpeed();

mmeasuespeed . :

Descanso;

}

}

};

Velocidad de anulación privada() {

if (mSpeedContent gt; = 1024) {

mSpeedContent = (flotante) ((mSpeedContent)/(1024 0.0));

mSpeedContent = (flotante) ( (int) (mSpeedContent * 10) 10 0.0)/10 (int) mSpeedContent);

m velocidad .mSpeedContent getString (r . string . m)); De lo contrario, {

m speed . settext ((int) mSpeedContent getString (r . string . kb)); > Medida de vacío privadoVelocidad (Cadena), Tostada. LENGTH_SHORT)

.

show();

mprogresshandler.sendemptymessage(STOP);

Retorno;

}

int fileLen = 0;

Tiempo de inicio largo = 0;

tiempo de finalización largo = 0;

Cadena final fileName = "tmp . apk"

HttpURLConnection conn = null

InputStream es = null

FileOutputStream fos = null

Archivo tmpFile =Nuevo archivo ("/SD card/temp");

if(!tmpfile.exists()){

tmpfile.mkdir();

}

archivo final archivo = nuevo archivo("/ SD card/temp/" fileName);

pruebe {

URL url = nueva URL (http URL);

pruebe {

conn = (HttpURLConnection) URL conexión abierta ();

Logutier. d("len="");

fileLen = conn. get contentlength();

logutil. d("len=" fileLen);

if (fileLen lt; = 0) {

mSpeedContent = 0;

mprogresshandler . sendemptymessage(STOP);

toast . r .string .conn_fail),

toast.length_short). show();

Retorno;

}

hora de inicio = system. hora actual millis();

es = conn. getinputstream();

fos = nuevo flujo de salida de archivo (archivo);

byte[]buf = nuevo byte[256];

conn.connect ( );

if (conn. getresponsecode() gt; = 400) {

toast make text(this, getString(r. string. no_time),

tostada. p>

tostada.longitud_corta).

show();

mprogresshandler.sendemptymessage(STOP);

Regresar;

}else{

mientras (verdadero){

if (es ! = null) {

int numRead = es .

if (numRead lt; = 0) {

Romper;

} else {

fos.write(buf, 0, numRead

}

mProgressState); =(int)(((numRead 0.0)/(fileLen 0.0))*1000000);

mprogresshandler . sendemptymessage(Cargando);

//logutil . " numRead " fileLen ="

// fileLen);

} else {

break;

}

}

}

hora de finalización = sistema . hora actual millis();

} captura (io excepción e) {

e.printstacktrace();

toast.make text(this, getString(r.string.no_permission),

toast.length_short). show();

}Finalmente {

if (conn!= null) {

conn.disconnect();

}

prueba {

if (fos != null) {

fos close();

}

<. p>if (es! = nulo) {

es close();

}

} captura (excepción io e 1)

e 1. printstacktrace();

}

}

} catch(malformedurexception e) {

e. ();

}

mSpeedContent = fileLen/(hora de finalización-hora de inicio);

mprogresshandler.sendemptymessage(STOP);

}

}