Android:在模拟器中模拟WiFi?

时间:2009-10-13 22:44:49

标签: android testing android-emulator wifi device-emulation

我想从我的应用程序检查该设备是否具有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 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:5)

Android emulator 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

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

答案 3 :(得分:4)

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

android-x86支持wi-fi。所以你可以安装你的应用程序,并运行它。

答案 4 :(得分:4)

理论上,linux(android底层内核)有mac80211_hwsim驱动程序,模拟WiFi。它可以用来设置几个WiFi设备(一个接入点,另一个WiFi设备等),组成一个WiFi网络。

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

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

答案 5 :(得分:2)

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

它使应用程序认为无论底层连接是什么,他们都会使用无线网络。

免责声明:我写了这些东西 它通过拦截ConnectivityManager / WifiManager调用(使用Xposed)来工作。我试图覆盖他们中的大多数,所以它做得很好,但总有可能有些东西丢失了(如果你找到了让我知道的东西)。

相关问题