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