Android WIFI 啟動流程(TIP^^)

來源:互聯網
上載者:User

標籤:

前幾天因為解決一堆Bug,沒時間寫。我不會每天都寫,就是為了存檔一些資料。

內容來源:工作中接觸到的+高手部落格+文檔(Books)=自己理解

僅限參考^^

 

此部落格是上一個<<Android WIFI 啟動流程>>的附加項。

參考部落格:http://blog.csdn.net/eoeandroida/article/details/40583353

 

配置AP:

 當使用者在WifiSettings介面上選擇了一個AP後,會顯示配置AP參數的一個對話方塊。

showAccessPointDialog(state, AccessPointDialog.MODE_INFO);(通過使用WifiDialog.java類對話方塊)

 

 串連AP:

當使用者在AccessPointDialog(WifiDialog.java類對話方塊)中選擇好加密方式和輸入密鑰之後,再點擊連線按鍵,Android就會去串連這個AP。

1 WifiLayer會先檢測這個AP是不是之前被配置過,這個是通過向wpa_supplicant發送LIST_NETWORK(在WifiNative類中使用)命令並且比較傳回值來實現的,

//Need WifiConfiguration for the AP

WifiConfiguration config = findConfiguredNetwork(state);

如果wpa_supplicant沒有這個AP的配置資訊,則會向wpa_supplicant發送ADD_NETWORK命令來添加該AP

2 ADD_NETWORK命令會返回一個ID,WifiLayer再用這個返回的ID作為參數向wpa_supplicant發送ENABLE_NETWORK命令,從而讓wpa_supplicant去串連該AP。

 

配置IP地址:

1 當wpa_supplicant成功串連上AP之後,它會向控制通道發送事件,通知串連上AP了,從而wifi_wait_for_event函數會接收到該事件,由此WifiMonitor中的MonitorThread會被執行來處理這個事件。

2 WifiMonitor再調用WifiStateTracker的notifyStateChange,WifiStateTracker則接著會往自身發送EVENT_DHCP_START訊息來啟動DHCP去擷取IP地址。

3 然後再廣播發送NETWORK_STATE_CHANGED_ACTION這個Intent。

4 WifiLayer註冊了接收NETWORK_STATE_CHANGED_ACTION這個Intent,所以它的相關處理函數handleNetworkStateChanged會被調用,當DHCP拿到IP地址之後,會再發送EVENT_DHCP_SUCCEEDED訊息。

5 WifiLayer處理EVENT_DHCP_SUCCEEDED訊息,會再次廣播發送。

至此為止,整個串連過程完成。(找不到WifiLayer類以及EVENT_DHCP_SUCCEEDED訊息,但基本思路是這樣)

 

*wpa_supplicant

對應上述結構,基於Android的手機中的WiFi控制分為三大組件:

1 用戶端程式,包括wpa_cli命令列或java圖形介面程式,通過socket與wpa_supplicant daemon服務通訊,發送命令並接收結果。

2 wpa_supplicant daemon服務,對應上述中間部分,功能是“上傳下達”。所有用戶端通過它控制硬體網卡,通過發送字串命令控制是否掃描AP,提取掃描結果和是否關聯AP等操作,同時將驅動的執行狀態發送給使用者。

   該服務是設計支援多種無線網卡晶片,因此各個廠商共同提供了一個通用介面給wpa_supplicant調用。

3 網卡驅動。

在手機記憶體的/etc/wpa_supplicant.conf中,我們可以直接看到WIFI支援的網路類型,每種類型都有例子,比如:

#Both WPA-PSK and WPA-EAP is accepted. Only CCMP is accepted as pairwise and

# group cipher.

#network={

# ssid="example"

# bssid=00:11:22:33:44:55

# proto=WPA RSN

# key_mgmt=WPA-PSK WPA-EAP

# pairwise=CCMP

# group=CCMP

# psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb

#}

不同類型的網路,不同的參數等等,應有盡有。

Android WIFI 啟動流程(TIP^^)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.