Android: simular WiFi en el emulador?

Me gustaría verificar desde mi aplicación si el dispositivo tiene conectividad WiFi, pero para hacerlo, primero debo encontrar la manera de obtener “WiFi” en el emulador. Simplemente vaya a Configuración -> Controles inalámbricos -> Wifi dice No se puede iniciar Wi-Fi , mientras logcat dice:

 E/WifiService( 566): Failed to load Wi-Fi driver. D/SettingsWifiEnabler( 695): Received wifi state changed from Unknown to Enabling D/SettingsWifiEnabler( 695): Received wifi state changed from Enabling to Unknown 

¿Cómo puedo simular la conectividad WiFi en el emulador?

Actualmente, aunque puede usar la conexión a Internet de su computadora en el emulador, no es confiable usarla para simular Wi-Fi. El WifiManager se confunde cuando cambia / quiere probar su estado de conectividad.

Incluso en Android 1.5, hubo algunos problemas ( Issue 2571 – android ), y aunque puedes usar tu Internet para simular conexiones HTTP y descargar datos, un mejor control de la conectividad Wi-Fi debería hacerse mejor con un dispositivo.

Dado que esta parece ser una pregunta popular, continuaré y agregaré una respuesta actualizada. El SDK aún no es compatible con la emulación de WiFi, pero Genymotion tiene WiFi de forma predeterminada, por lo que puede usarlo para desarrollar / probar aplicaciones con funcionalidad WiFi específica.

Android emulador wifi

A partir de la revisión 26.1.3, el emulador de Android ahora admite la conexión a WiFi en una imagen Nougat (API 25).

Se agregó soporte para Wi-Fi en algunas imágenes del sistema (actualmente solo API nivel 25). Un punto de acceso llamado “AndroidWifi” está disponible y Android se conecta automáticamente a él.

Fuente: https://developer.android.com/studio/releases/emulator.html#26-1-3

Puede verificar la versión de su emulador yendo a la configuración del emulador (tres puntos)> Ayuda> Acerca de. También tenga en cuenta que si se creó un AVD antes de que se lanzara la versión 26.1.3, tendrá que volver a crear su AVD. Leí en algún lado que borrar datos también podría funcionar, pero no lo intenté.

En teoría, Linux (el kernel subyacente de Android) tiene el controlador mac80211_hwsim , que simula WiFi. Se puede usar para configurar varios dispositivos WiFi (un punto de acceso y otro dispositivo WiFi, etc.) que constituirían una red WiFi.

Es útil para probar progtwigs WiFi en Linux. Posiblemente, incluso en modo de usuario Linux u otras “cajas” virtuales aisladas con Linux.

En teoría, este controlador podría usarse para pruebas en los sistemas Android donde no tienes un dispositivo WiFi real (o no quieres usarlo), y también en algún tipo de emulador de Android. Quizás, uno puede administrar el uso de este controlador en android-x86, o – para probar – en android-x86 ejecutarse en VirtualBox.

Si no tiene un dispositivo real, creo que la mejor manera es instalar android-x86 o usarlo en el usb en vivo. No hay diferencias entre Android y Android-x86.

Y Android-x86 admite wi-fi. para que pueda instalar su aplicación y ejecutarla.

Probablemente no sea un sustituto de las pruebas en un dispositivo real, pero si está buscando un caso de prueba lo suficientemente bueno en el emulador, pruebe Fake Wifi Connection :

Hace que las aplicaciones piensen que están en wifi sin importar cuál sea la conexión subyacente.

descargo de responsabilidad: escribí esto.
Funciona interceptando las llamadas de ConnectivityManager / WifiManager (usa Xposed ). Intenté cubrir la mayoría de ellos, así que hace un trabajo bastante bueno, sin embargo, siempre es posible que falte algo (si encuentras algo, avísame).