Android: имитировать WiFi в эмуляторе?

Я хотел бы проверить из моего приложения, имеет ли устройство подключение WiFi, но для этого я должен сначала найти способ получить "WiFi" в эмуляторе. Просто собираюсь настройки - > беспроводное управление - > Wifi говорит не удается запустить Wi-Fi, а logcat говорит:

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

Как я могу имитировать подключение WiFi в эмуляторе?

6 ответов


В настоящее время, хотя вы можете использовать подключение к интернету вашего компьютера в эмуляторе, это не надежно использовать его для моделирования Wi-Fi. The WifiManager путается, когда вы переключаетесь / хотите проверить состояние подключения.

даже в Android 1.5 были некоторые проблемы с ним (выпуск 2571-android), и хотя вы можете использовать свой интернет для моделирования HTTP-соединений и загрузки данных, более точный контроль над подключением Wi-Fi должен быть лучше сделала с устройством.


поскольку это, похоже, популярный вопрос, я продолжу и добавлю обновленный ответ. SDK по-прежнему не поддерживает эмуляцию WiFi, но Genymotion делает WiFi по умолчанию, поэтому вы можете использовать его для разработки / тестирования приложений с определенной функциональностью WiFi.


Android emulator wifi

начиная с версии 26.1.3, эмулятор Android теперь поддерживает подключение к WiFi на изображении нуги (API 25).

добавлена поддержка Wi-Fi в некоторых системных образах (в настоящее время только уровень API 25). Доступна точка доступа под названием "AndroidWifi", и Android автоматически подключается к ней.

источник: https://developer.android.com/studio/releases/emulator.html#26-1-3

вы можете проверить версию своего эмулятора, перейдя в настройки эмулятора (три точки) > справка > о программе. Также обратите внимание, что если AVD был создан до выпуска версии 26.1.3, вам придется воссоздать свой AVD. Я где-то читал, что стирание данных также может работать, но я не пробовал.


теоретически, linux (ядро, лежащее в основе android) имеет mac80211_hwsim драйвер, который имитирует WiFi. Его можно использовать для настройки нескольких устройств WiFi (точки доступа и другого устройства WiFi и т. д.), которые составляют сеть WiFi.

Это полезно для тестирования программ WiFi под linux. Возможно, даже под пользовательский режим linux или другие изолированные виртуальные "коробки" с linux.

теоретически этот драйвер может использоваться для тестов в android-системы, где у вас нет реального WiFi-устройства (или не хотите его использовать), а также в каких-то android-эмуляторах. Возможно, этот драйвер можно использовать в android-x86 или--для тестирования--в android-x86 в VirtualBox.


Если у вас нет реального устройства, я думаю, лучший способ-это установка android-x86 или использовать его на live usb. Между android и android-x86 нет различий.

и android-x86 поддерживают wi-fi. таким образом, вы можете установить приложение и запустить его.


вероятно, нет замены для тестирования на реальном устройстве, но если вы ищете достаточно хороший тестовый случай в эмуляторе, дайте Поддельные Подключения Wifi попробуй:

Это заставляет приложения думать, что они на wifi независимо от того, какое базовое соединение.

отказ от ответственности: я написал этот материал.
Он работает путем перехвата вызовов ConnectivityManager / WifiManager (использует Экспоузд). Я пытался охватить большинство из них, поэтому он делает довольно хорошая работа, тем не менее, всегда возможно, что некоторые из них отсутствуют (если вы найдете что-то, дайте мне знать).