ver velocidad quien programa por personas para mide megas intrusos internet gente esta dispositivos desconectar controlar conectados conectado como celulares bloquearlo bloquear app android android-wifi telephonymanager

android - velocidad - programa para bloquear personas de mi wifi



Obtén la velocidad actual de internet(móvil y wifi) con Android (1)

No puede obtener la velocidad de descarga / carga sin hacer ping a ningún servidor. Como su servidor no admite el ping, puede utilizar un sitio de ping de terceros.

Con la biblioteca github.com/bertrandmartel/speed-test-lib puedes hacerlo fácilmente. Algunas de sus funcionalidades deseadas están disponibles en esta biblioteca. Como

  • descarga de prueba de velocidad
  • carga de prueba de velocidad
  • monitoreo de progreso de descarga / carga
  • nombre de host configurable / puerto / uri (nombre de usuario y contraseña para FTP)
  • Tiempo de espera de socket configurable y tamaño de fragmento
  • configurar el almacenamiento de archivos de carga

Gradle:

compile ''fr.bmartel:jspeedtest:1.32.1''

Código de ejemplo:

SpeedTestSocket speedTestSocket = new SpeedTestSocket(); // add a listener to wait for speedtest completion and progress speedTestSocket.addSpeedTestListener(new ISpeedTestListener() { @Override public void onCompletion(SpeedTestReport report) { // called when download/upload is complete System.out.println("[COMPLETED] rate in octet/s : " + report.getTransferRateOctet()); System.out.println("[COMPLETED] rate in bit/s : " + report.getTransferRateBit()); } @Override public void onError(SpeedTestError speedTestError, String errorMessage) { // called when a download/upload error occur } @Override public void onProgress(float percent, SpeedTestReport report) { // called to notify download/upload progress System.out.println("[PROGRESS] progress : " + percent + "%"); System.out.println("[PROGRESS] rate in octet/s : " + report.getTransferRateOctet()); System.out.println("[PROGRESS] rate in bit/s : " + report.getTransferRateBit()); } });

Tengo una aplicación que tiene que funcionar en modo offline y en línea. La aplicación debe realizar solicitudes al servidor de aplicaciones según la velocidad de Internet de la conexión de red actual (Wifi o Datos).

Si el Wifi está conectado, puedo obtener la intensidad de la señal Wifi de la conexión actual utilizando 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 obtener la fuerza única usando la clase de 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 verifican la velocidad enviando o descargando un archivo específico o haciendo ping a un servidor remoto y luego calculando la velocidad usando el tiempo transcurrido.

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

Entonces, ¿hay alguna forma alternativa de verificar 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 verificar el tipo de conectividad de la red actual. Pero hay casos en los que tengo una señal LTE con plena potencia pero sin conexión a Internet muy lenta. Por lo tanto, esto tampoco será una solución precisa para mí.

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

Gracias