2009-10-13 12 views
30

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. Tout va Paramètres -> Connexions sans fil -> Wifi dit Impossible de démarrer WiFi, tandis que logcat dit:Android: simuler le WiFi dans l'émulateur?

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é Wi-Fi dans l'émulateur?

Répondre

7

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 le WiFi par défaut, donc vous pouvez l'utiliser pour développer/tester des applications avec des fonctionnalités WiFi spécifiques.

+2

Correct, mais seulement dans la version sous licence atm. –

+0

mise à jour 2017, il est maintenant disponible dans [l'émulateur API 25] (https://developer.android.com/studio/releases/emulator.html#26-1-3) lorsque vous désactivez l'accélération matérielle - –

19

Actuellement, alors que vous pouvez utiliser votre connexion Internet de l'ordinateur dans l'émulateur, il est pas fiable pour l'utiliser pour simuler une connexion Wi-Fi. Le WifiManager devient confus lorsque vous changez/voulez tester votre état de connectivité. Même avec Android 1.5, il y avait quelques problèmes (Issue 2571 - android), et même si vous pouvez utiliser Internet pour simuler des connexions HTTP et télécharger des données, un meilleur contrôle de la connectivité Wi-Fi devrait être fait avec un appareil.

3

Si vous ne disposez pas d'un appareil réel, je pense que la meilleure façon est d'installer android-x86 ou l'utiliser sur USB en direct. Il n'y a pas de diffrences entre android et android-x86.

Et android-x86 support wi-fi. Vous pouvez donc installer votre application et l'exécuter.

+0

Très bien ... mais est-ce que ça fonctionne? Je veux dire simuler le wifi depuis cet émulateur (virtualbox)? : D – gumuruh

+0

À ce jour, ce n'est pas le cas. –

3

En théorie, Linux (le noyau Android sous-jacente) a mac80211_hwsim pilote, qui simule le WiFi. Il peut être utilisé pour configurer plusieurs périphériques Wi-Fi (un point d'accès et un autre périphérique WiFi, etc.), ce qui constituerait un réseau WiFi.

Il est utile pour tester les programmes WiFi sous Linux. Eventuellement, même sous user-mode linux 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 périphérique WiFi réel (ou ne voulez pas l'utiliser), et également dans certains émulateurs Android. Peut-être, on peut arriver à utiliser ce pilote dans android-x86, ou - pour tester - dans android-x86 exécuté dans VirtualBox.

2

probablement pas remplacer les essais sur un appareil réel, mais si vous êtes à la recherche d'un assez bon cas de test dans l'émulateur donner Fake Wifi Connection un essai:

Il fait des applications pensent qu'ils sont sur wifi, peu importe ce que la connexion sous-jacente est.

avertissement: J'ai écrit ce genre de choses.
Il fonctionne en interceptant les appels ConnectivityManager/WifiManager (utilise Xposed). J'ai essayé de couvrir la plupart d'entre eux donc ça fait du très bon travail, néanmoins il est toujours possible qu'il manque quelque chose (si vous trouvez quelque chose, faites le moi savoir).

4

Android emulator wifi

À 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).

Ajout du support pour le Wi-Fi dans certaines images du système (actuellement seul niveau de l'API 25). Un point d'accès appelé "AndroidWifi" est disponible et Android se connecte automatiquement à celui-ci.

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> A 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 pourrait aussi fonctionner, mais je n'ai pas essayé cela.

+0

je devais désactiver accélération matérielle pour qu'il soit disponible. Au moment de l'écriture, réglez Emulated Performance Graphics' sur 'Software - GLES 2.0'. –