android framework wifi 開啟原理

本文分析主要基于android 10代碼,分析framework中wifi enable的原理。
android WIFI框架如下圖:


android wifi struct.png

分析framework中wifi相關(guān)鏈接控制的原理,由于wifi相關(guān)代碼有多處比如:

frameworks/base/wifi/java/android/net/wifi/
frameworks/opt/net/wifi/service/java/com/android/server/wifi/
frameworks/base/core/java/android/net/

這種manager service牽扯到多個,代碼在多處,一下進入代碼分析比較困難,比較迅速的方法是從aidl進程間通信入手,抓到aidl接口就抓到了C/S模型的主要脈絡(luò),順藤摸瓜,后面的分析也就簡單了。以wifi為例,wifi的進程間通信的aidl文件有如下三個。

IWifiScanner.aidl
interface IWifiScanner
{
    Messenger getMessenger();

    Bundle getAvailableChannels(int band, String packageName, String featureId);
}
IWifiManager.aidl
IWifiConnectedNetworkScorer.aidl

通過這三個aidl,可以看出,wifi掃描有個servcie,wifi管理有個service,wifi連接后打分也有個aidl。
WifiScanningService和WifiService繼承SystemService,由SystemService啟動。
上面三個service對應(yīng)的manager分別是 WifiManager.java WifiScanner.java 其中WifiManager.java實現(xiàn)了IWifiConnectedNetworkScorer.aidl。
從上面可以看出,在frameworks/base/wifi/java/android/net/wifi/文件夾下的接口主要是上層的封裝供上層調(diào)用使用。
而frameworks/opt/net/wifi/service/java/com/android/server/wifi/下的接口主要是wifi在framework層的實現(xiàn)。
下面以wifi enable為例,看一下如何一步一步實現(xiàn)的。


wifi_manager.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容