33

我想从我的应用程序中检查设备是否具有 WiFi 连接,但为了做到这一点,我必须首先找到一种在模拟器中获取“WiFi”的方法。只需转到Settings -> Wireless controls -> WifiUnable to start 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 连接?

4

6 回答 6

20

目前,虽然您可以在模拟器中使用计算机的 Internet 连接,但使用它来模拟 Wi-Fi 并不可靠。当WifiManager您切换/想要测试您的连接状态时会感到困惑。

即使在 Android 1.5 中,它也存在一些问题(Issue 2571 - android),虽然您可以使用 Internet 来模拟 HTTP 连接和下载数据,但最好通过设备来更好地控制 Wi-Fi 连接。

于 2009-10-14T09:04:46.327 回答
9

由于这似乎是一个受欢迎的问题,我将继续添加更新的答案。SDK 仍然不支持 WiFi 仿真,但Genymotion默认支持 WiFi,因此您可以使用它来开发/测试具有特定 WiFi 功能的应用程序。

于 2014-12-13T21:27:00.203 回答
5

安卓模拟器wifi

从版本 26.1.3 开始,Android 模拟器现在支持在 Nougat 映像 (API 25) 上连接到 WiFi。

在某些系统映像中添加了对 Wi-Fi 的支持(当前仅 API 级别 25)。一个名为“AndroidWifi”的接入点可用,Android 会自动连接到它。

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

您可以通过进入模拟器设置(三个点)>帮助>关于来检查模拟器的版本。另请注意,如果 AVD 是在 26.1.3 版本发布之前创建的,则必须重新创建 AVD。我在某处读到擦除数据也可能有效,但我没有尝试过。

于 2017-09-19T06:28:38.747 回答
4

如果您没有真实设备,我认为最好的方法是安装android-x86或在 live usb 上使用它。android 和 android-x86 之间没有区别。

并且 android-x86 支持 wi-fi。这样您就可以安装您的应用程序并运行它。

于 2012-01-07T11:47:13.353 回答
4

理论上linux(android底层的内核)有mac80211_hwsim驱动,模拟WiFi。它可用于设置多个 WiFi 设备(一个接入点和另一个 WiFi 设备等),这些设备将组成一个 WiFi 网络。

它对于在 linux 下测试 WiFi 程序很有用。可能,即使在用户模式 ​​linux或其他与 linux 隔离的虚拟“盒子”下。

理论上,该驱动程序可用于在您没有真正的 WiFi 设备(或不想使用它)的 android 系统中进行测试,也可用于某种 android 模拟器。也许,可以设法在 android-x86 中使用这个驱动程序,或者——为了测试——在 android-x86 中在 VirtualBox 中运行。

于 2012-05-06T01:34:16.787 回答
2

可能无法替代在真实设备上进行测试,但如果您正在模拟器中寻找足够好的测试用例,请尝试使用Fake Wifi Connection

无论底层连接是什么,它都会让应用程序认为它们在 wifi 上。

免责声明:我写了这些东西。
它通过拦截 ConnectivityManager / WifiManager 调用(使用Xposed)来工作。我已经尝试涵盖其中的大部分内容,所以它做得很好,但是总有可能缺少一些内容(如果你找到了一些东西,请告诉我)。

于 2014-12-13T16:36:26.783 回答