web-dev-qa-db-fra.com

Android: simuler le WiFi dans l'émulateur?

Je voudrais vérifier à partir de mon application si l'appareil dispose d'une connectivité WiFi, mais pour ce faire, je dois d'abord trouver un moyen d'obtenir "WiFi" dans l'émulateur. Aller simplement à Paramètres -> Commandes sans fil -> Wifi dit Impossible de démarrer le Wi-Fi , tandis que logcat dit:

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

Comment puis-je simuler la connectivité WiFi dans l'émulateur?

32
Felix

Étant donné que cela semble être une question populaire, je vais continuer et ajouter une réponse mise à jour. Le SDK ne prend toujours pas en charge l'émulation WiFi, mais Genymotion le WiFi par défaut, vous pouvez donc l'utiliser pour développer/tester des applications avec des fonctionnalités WiFi spécifiques.

7
Felix

Actuellement, bien que vous puissiez utiliser la connexion Internet de votre ordinateur dans l'émulateur, il n'est pas fiable de l'utiliser pour simuler le Wi-Fi. WifiManager devient confus lorsque vous changez/souhaitez tester votre état de connectivité.

Même dans Android 1.5, il y avait quelques problèmes avec lui ( Issue 2571 - Android ), et même si vous pouvez utiliser votre Internet pour simuler des connexions HTTP et télécharger des données, plus fin le contrôle de la connectivité Wi-Fi devrait être mieux fait avec un appareil.

19
Dimitar Dimitrov

Android emulator wifi

À partir de la révision 26.1.3, l'émulateur Android Android prend désormais en charge la connexion au WiFi sur une image Nougat (API 25).

Ajout de la prise en charge du Wi-Fi dans certaines images du système (actuellement uniquement niveau API 25). Un point d'accès appelé "AndroidWifi" est disponible et Android s'y connecte automatiquement.

Source: https://developer.Android.com/studio/releases/emulator.html#26-1-

Vous pouvez vérifier la version de votre émulateur en accédant aux paramètres de l'émulateur (trois points)> Aide> À propos. Notez également que si un AVD a été créé avant la sortie de la version 26.1.3, vous devrez recréer votre AVD. J'ai lu quelque part que l'effacement des données pouvait également fonctionner, mais je n'ai pas essayé cela.

5
Saket

En théorie, Linux (le noyau sous-jacent Android) a mac80211_hwsim pilote, qui simule le WiFi. Il peut être utilisé pour configurer plusieurs appareils WiFi (un point d'accès et un autre appareil WiFi, etc.), qui constitueraient un réseau WiFi.

Il est utile pour tester des programmes WiFi sous Linux. Peut-être, même sous Linux en mode utilisateur ou d'autres "boîtes" virtuelles isolées avec Linux.

En théorie, ce pilote pourrait être utilisé pour des tests dans les systèmes Android où vous n'avez pas de véritable périphérique WiFi (ou ne voulez pas l'utiliser), et aussi dans une sorte de Android emulators. Peut-être, on peut réussir à utiliser ce pilote dans Android-x86, ou - pour les tests - dans Android-x86 exécuté dans VirtualBox.

Si vous n'avez pas de véritable appareil, je pense que la meilleure façon est d'installer Android-x86 ou de l'utiliser sur une clé USB en direct. Il n'y a aucune différence entre Android et Android-x86.

Et Android-x86 prend en charge le Wi-Fi. afin que vous puissiez installer votre application et l'exécuter.

4
ocanal

Probablement aucun substitut pour tester sur un appareil réel, mais si vous cherchez un cas de test assez bon dans l'émulateur, donnez Fake Wifi Connection un essai:

Cela fait croire aux applications qu'elles sont sur le wifi, quelle que soit la connexion sous-jacente.

Avertissement: J'ai écrit ce truc.
Il fonctionne en interceptant les appels ConnectivityManager/WifiManager (utilise Xposed ). J'ai essayé de couvrir la plupart d'entre eux, donc cela fait un très bon travail, néanmoins il est toujours possible que certains manquent (si vous trouvez quelque chose, faites le moi savoir).

2
lemonsqueeze