Android 9.0 Wifi连接AP过程
本文分析的是首次連接AP(沒有保存參數的AP)的過程。
一、簡易流程圖
二、代碼執行流程
2.1 Settings應用
2.2 WifiManager.java
通過異步通道AsyncChannel來調用WifiServiceImpl的ClientHandler來處理SAVE_NETWORK消息。
2.3 WifiServiceImpl.java
mWifiStateMachine.sendMessage發送消息直接讓WifiStateMachine狀態機來處理。
2.4 WifiStateMachine.java
主要看這兩個方法
調用saveNetworkConfigAndSendReply來保存連接配置參數并發送廣播。
調用了startConnectToNetwork方法去連接AP。先看下saveNetworkConfigAndSendReply方法;
這里主要執行了兩個操作,
調用mWifiConfigManager.addOrUpdateNetwork進行配置參數的保存,調用 broadcastWifiCredentialChanged發送廣播刷新。再接著看startConnectToNetwork方法。
發送CMD_START_CONNECT消息,ConnectModeState會處理CMD_START_CONNECT 消息。
這里調用了mWifiNative.connectToNetwork()方法。
2.5 WifiNative.java
需要關注下這個方法的注釋,注釋說明了這個方法做了6件事:
(1)中止任何正在進行的掃描以免阻塞連接請求
(2)移除wpa_supplicant里的所有現有網絡(這會隱式觸發斷開連接)
(3)在wpa_supplicant里添加一個新的網絡
(4)在wpa_supplicant中保存提供的configuration
(5)在wpa_supplicant中選擇新的網絡
(6)觸發wpa_supplicant 的重新連接命令
我們再看下mSupplicantStaIfaceHal.connectToNetwork()方法。
2.6 SupplicantStaIfaceHal.java
這里先執行了addNetworkAndSaveConfig()方法添加網絡。然后再執行了networkHandle.select()方法。
2.7 SupplicantStaNetworkHal.java
mISupplicantStaNetwork.select()方法就是通過hidl調用底層supplicant。
WIFI連接熱點的Java段流程就基本結束了
總結
以上是生活随笔為你收集整理的Android 9.0 Wifi连接AP过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thinkpad T450 安装固态硬盘
- 下一篇: Android10下wifi连接的两种方