Android: simuler WiFi dans l'émulateur?
je tiens à 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. Juste aller à paramètres - > contrôles Sans Fil - > Wifi dit incapable de démarrer 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 simuler la connectivité WiFi dans l'émulateur?
6 réponses
actuellement, alors que vous pouvez utiliser la connexion Internet de votre ordinateur dans l'émulateur, il n'est pas fiable de l'utiliser pour simuler Wi-Fi. Le WifiManager
est confus lorsque vous passez/voulez tester votre état de connectivité.
même dans Android 1.5, il y avait quelques problèmes avec elle ( question 2571-android ), et alors que vous pouvez utiliser votre Internet pour simuler les connexions HTTP et le téléchargement de données, un contrôle plus fin sur La connectivité Wi-Fi devrait plutôt être réalisée avec un appareil.
puisque cela semble être une question populaire, je vais aller de l'avant et ajouter une réponse mise à jour. Le SDK ne supporte toujours pas L'émulation WiFi, mais Genymotion fait WiFi par défaut, donc vous pouvez l'utiliser pour développer/tester des applications avec des fonctionnalités WiFi spécifiques.
à partir de la révision 26.1.3, L'émulateur Android prend désormais en charge la connexion WiFi sur une image Nougat (API 25).
a ajouté la prise en charge du Wi-Fi dans certaines images système (actuellement seulement le niveau D'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-3
vous pouvez vérifier la version de votre émulateur en allant dans les paramètres de l'émulateur (trois points) > aide > environ. Notez également que si un AVD a été créé avant la version 26.1.3, vous devrez recréer votre AVD. J'ai lu quelque part que essuyer des données pourrait aussi fonctionner, mais je n'ai pas essayé cela.
en théorie, linux (le noyau sous-jacent à android) a mac80211_hwsim pilote, qui simule WiFi. Il peut être utilisé pour mettre en place plusieurs appareils WiFi (un point d'accès, et un autre appareil WiFi, et ainsi de suite), qui constitueraient un réseau WiFi.
c'est utile pour tester des programmes WiFi sous linux. Peut-être, même sous mode utilisateur linux ou d'autres "boîtes" virtuelles isolées avec linux.
In en théorie, ce pilote pourrait être utilisé pour des tests dans les systèmes android où vous n'avez pas de véritable appareil WiFi (ou ne voulez pas l'utiliser), et aussi dans une sorte d'émulateurs android. Peut-être, on peut gérer d'utiliser ce pilote dans android-x86, ou--pour tester--dans android-x86 exécuter 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 live usb. Il n'y a aucune différence entre android et android-x86.
et android-x86 prise en charge wi-fi. ainsi, vous pouvez installer votre application, et de l'exécuter.
probablement pas de substitut pour tester sur un appareil réel, mais si vous êtes à la recherche d'un bon cas de test dans l'émulateur donner fausse connexion Wifi un essai:
il fait les applications pensent qu'ils sont sur le wifi, peu importe ce que la connexion sous-jacente est.
avertissement: j'ai écrit ce genre de choses.
Il fonctionne en interceptant les appels de ConnectivityManager / WifiManager (uses Xposé ). J'ai essayé de couvrir la plupart d'entre eux donc il fait un assez bon travail, néanmoins il est toujours possible que certains sont manquants (si vous trouvez quelque chose faites le moi savoir).