2009-10-13 1002 views
30

我想從我的應用程序檢查設備是否具有WiFi連接,但爲了做到這一點,我必須先找到一種方法在模擬器中獲得「WiFi」。只是要設置 - >無線控制 - >無線上網無法啓動的WiFi,而logcat說:Android:在模擬器中模擬WiFi?

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連接?

回答

7

由於這似乎是一個受歡迎的問題,我會繼續並添加一個更新的答案。該SDK仍然不支持WiFi仿真,但Genymotion默認爲WiFi,因此您可以使用它來開發/測試具有特定WiFi功能的應用。

+2

正確,但僅限於行貨版本atm。 –

+0

2017年更新,它現在可以在[API 25模擬器(https://developer.android.com/studio/releases/emulator.html#26-1-3)當您禁用硬件加速 - –

19

目前,雖然您可以在模擬器中使用計算機的Internet連接,但使用它模擬Wi-Fi並不可靠。當您切換/想要測試連接狀態時,WifiManager會感到困惑。

即使在Android 1.5中,也存在一些問題(Issue 2571 - android),雖然您可以使用互聯網模擬HTTP連接並下載數據,但更好地控制Wi-Fi連接應該更好地使用設備完成。

3

如果您沒有真實的設備,我認爲最好的方法是安裝android-x86或在現場使用USB。 android和android-x86之間沒有區別。

And android-x86 support wi-fi。所以你可以安裝你的應用程序,並運行它。

+0

好吧......但它的工作原理是什麼?我的意思是模擬來自該模擬器(虛擬箱)的無線網絡? :D – gumuruh

+0

截至今天,它沒有。 –

3

從理論上講,linux(內核底層android)有mac80211_hwsim驅動程序,它模擬WiFi。它可以用來設置幾個WiFi設備(一個接入點,另一個WiFi設備等等),它們將組成一個WiFi網絡。

這對測試linux下的WiFi程序很有用。可能,即使在user-mode linux或其他孤立的虛擬「盒子」與Linux。

從理論上講,這個驅動程序可以在沒有真正的WiFi設備(或不想使用它)的android系統中使用,也可以在某些類似的android模擬器中使用。也許,可以設置在android-x86中使用此驅動程序,或者 - 在VirtualBox中運行android-x86中進行測試。

2

也許不能代替真實的設備上測試,但如果你正在尋找在模擬器足夠好的測試用例給Fake Wifi Connection一試:

它使應用程序認爲他們是在WiFi不管是什麼底層的連接是。

免責聲明:我寫了這個東西。
它通過攔截ConnectivityManager/WifiManager調用工作(使用Xposed)。我試圖覆蓋他們中的大多數,所以它做得很好,但總是有可能失去一些(如果你發現讓我知道的東西)。

4

Android emulator wifi

從版本26.1.3開始,Android模擬器現在支持連接到WiFi牛軋糖圖像(API 25)上。

在某些系統映像(當前僅API級別25)中添加了對Wi-Fi的支持。一個名爲「AndroidWifi」的接入點可用,Android會自動連接到它。

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

您可以進入仿真器設置(三個點)>幫助>關於檢查仿真器的版本。另請注意,如果在版本26.1.3發佈之前創建了AVD,則必須重新創建AVD。我在某處讀取擦除數據也可能會起作用,但我沒有嘗試過。

+0

我需要禁用硬件加速使其可用。在編寫時將'Emulated Performance Graphics'設置爲'Software - GLES 2.0'。 –