2014-02-19 66 views
1

我正在維護一個與wifi網絡相關的小應用程序。它測試手機連接到wifi網絡時的互聯網連接。Wifi漫遊連接順序

在運行Android 2.2.2的HTC Desire與覆蓋面略有重疊的地方測試並使用該應用程序時,從WiFi A移動到B時的斷開連接順序似乎爲:從無線網絡

  1. 斷開A
  2. 連接到WiFi網絡乙

現在用一個Fairphone運行4.2.2,該序列似乎是:

  1. 連接到WiFi乙
  2. 從無線網絡斷開A

這是否意味着不同的是HTC Desire的,在Fairphone做某種漫遊,並第一次連接到其信號變得比一個更強大的WiFi當前的wifi連接,然後丟棄「舊」的wifi連接?

我問這個問題,因爲如果我的觀察是正確的,這對應用程序的行爲的一些含義,即它不應該考慮過去的WiFi連接事件,而是檢查WiFi連接的實際狀態,不管最後的事件是「連接」或「斷開」。

+1

根據您的觀察,我認爲您應該在代碼中進行更改。一些瘋狂的設備甚至可能擁有不止一個WiFi適配器,並且您的代碼將爲其準備。 – Merlevede

+1

我已經看到很多不同的Android手機的wifi行爲。不同的品牌,不同的Android版本,不同的wifi芯片。這些之間有很多不同之處。因此,雖然特定手機的wifi行爲是可預測的,但手機之間並非如此。如果你的應用取決於特定的wifi行爲,我建議你用你的應用測試足夠數量的手機。 – Christine

+0

謝謝。正如Merlevede所建議的那樣,我已經改變了我的代碼,所以它的行爲取決於WiFi連接的實際狀態,而不是最新的wifi事件報告的狀態,所以無論設備的任何特定行爲如何,它都可以工作,並且我的應用的行爲可以被覆蓋通過單元測試:-) –

回答

1

在android上,和許多linux版本一樣,wpa_supplicant控制着漫遊行爲。你可以看看它,看看它在做什麼。

具體回答你的問題,有可能WLAN設備(在Linux中),使用不同類型的驅動程序:

  • SoftMAC:MLME(媒體訪問控制(MAC)層管理實體)是用軟件管理。
  • FullMAC:MLME由硬件管理。

特別是一些MLME功能are

  • 身份驗證
  • Deauthenticate
  • 取消關聯
  • 重新關聯

因此,在Android的不同設備和版本(驅動程序類型,wpa_supplicant)的某些機制中可能會出現差異。

漫遊正確的802.11行爲是向新選擇的AP發送重關聯請求。首先從一個AP分離出來的客戶端與一個新的AP關聯實際上不支持802.11漫遊,並且通過SoftMac方法使用某種假漫遊。

在發送到某個工作站的標準漫遊數據包中不會丟失,並且從一個AP轉發到漫遊的AP以便漫遊站接收它們。