¿Cómo detectar si el sistema está conectado a wifi ad hoc o de infraestructura?

Estoy trabajando en una aplicación que comprueba, antes de habilitar una descarga, que la conexión es fiable (básicamente la conexión debe ser una infraestructura wifi y no paquete de datos) Pero en caso de que el usuario sea

  1. Utilizando una red ad hoc, o
  2. La conexión a Internet del dispositivo móvil como WAP

Y luego conectar e iniciar la descarga en el escritorio, sigue siendo indeseado. ¿Hay una manera de detectar si alguna conexión wifi no es realmente de ad hoc o usando WAP del teléfono?

3 Solutions collect form web for “¿Cómo detectar si el sistema está conectado a wifi ad hoc o de infraestructura?”

Usted puede detectar …

  1. … la Red Ad-Hoc, verificando si realmente puedes acceder a un servidor en Internet – por lo general, Ad-Hoc no incluye totalmente la conectividad, así que si tienes red pero no tienes acceso a Internet, la descarga no funcionará
  2. … el uso de un punto de acceso telefónico mediante la medición del tiempo de ida y vuelta de una solicitud – que suelen ser bastante alta en la banda ancha móvil.

    long start = System.nanoTime(); HttpGet requestForTest = new HttpGet("http://m.google.com"); try { new DefaultHttpClient().execute(requestForTest); // can last... } catch (Exception e) { } long rtt = System.nanoTime() - start; // ... evaluate the rtt 

    Esta tabla puede ser relevante para la evaluación ( fuente )

     Generation | Data rate | Latency 2G | 100–400 Kbit/s | 300–1000 ms 3G | 0.5–5 Mbit/s | 100–500 ms 4G | 1–50 Mbit/s | < 100 ms 

Aparte de estas dos opciones: ¿por qué específicamente prohíbe la banda ancha Ad-Hoc o móvil? ¿No deberías tampoco

  • Prohibir nada y dejar que el usuario decida si quiere esperar por edades

o

  • Prohibir todas las conexiones lentas, es decir, controlar la velocidad de transferencia durante un par de segundos y cancelar la descarga automáticamente si es demasiado pequeña

Esencialmente, está escribiendo una aplicación en la capa 7 del modelo ISO / OSI y desea conocer el contenido de la capa 2. Eso no es explícitamente cómo debería funcionar.

  • Si su descarga es grande, debe proteger al usuario de quemar el volumen de datos de su contrato móvil y notificar al usuario antes de ejecutar la descarga.
    También es así como la tienda Google Play gestiona descargas mayores de unos cuantos MBytes.
  • Puede tener una opción en las preferencias de su aplicación para permitir sólo las descargas cuando esté en Wi-Fi para que los usuarios puedan estar seguros de guardar su plan de datos.
  • Si no desea que un usuario descargue sus archivos a través de la red móvil, solo permita Wi-Fi y luego haga una copia y una descarga de un archivo de 1 MB para medir el ancho de banda antes de decidir si la descarga real tardará una eternidad o no.

Todo el resto debe ser manejado por el sistema y no necesita preocuparse.

Para comprobar si está conectado a wifi:

 ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (wifi.isConnected()) { // is connected to wifi } 

No olvide agregar permiso para Manifestar:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
  • Impresión Bluetooth y WIFI para Android
  • Notificación de muestra de Android de BroadcastReceiver
  • ANDROID: si WiFi está habilitado Y activo, inicia una intención
  • WiFi-Direct en JellyBean, WPA Suplicante desordenado
  • Android Wifi Direct detecta a sus compañeros pero Peer List es emty
  • ¿Puedo obtener la dirección IP del punto de acceso a Estoy conectado a través de wifi?
  • Como encontrar la dirección de la señal wifi de otro dispositivo en android?
  • Android ESC / POS Impresión sobre WiFi
  • Cómo obtener el estándar wifi
  • Compartir ajustes WiFi como QR-Code para WPA2 Enterprise
  • Android: Cómo configurar una IP estática para una nueva configuración WiFi
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.