wifi相關的文件位置:
WIFI Settings應用程序位於
packages/apps/Settings/src/com/android/settings/wifi/
JAVA部分:
frameworks/base/services/java/com/android/server/
frameworks/base/wifi/java/android/net/wifi/
JNI部分:
frameworks/base/core/jni/android_net_wifi_Wifi.cpp
wifi管理庫。
hardware/libhardware_legary/wifi/
wifi用戶空間的程序和庫:
external/wpa_supplicant/
生成庫libwpaclient.so和守護進程wpa_supplicant。
WifiManager:提供了管理WiFI連接的大部分API
ScanResult:已經檢測出的接入點(包括接入點的地址、名稱、身份認證、頻率、信號強度)
WifiConfiguration:WiFi連接的網絡配置(包括安全配置等)
WifiInfo:WiFI無線連接的描述(包括接入點、網絡連接狀態、隱藏的接入點、IP地址、連接速度、MAC地址、網絡ID、信號強度等等)
WifiManager.WifiLock:允許應用程序一直使用WiFI無線網絡,通常情況下當用戶在一段時間內沒有任何操作的時候,WiFi網絡會自動關閉。我們使用WifiLock來鎖定WiFi網絡,使其一直保持連接,直到這個鎖被釋放。多個應用程序可能有多個鎖,當多有的應用程序的鎖都被釋放的時候,WiFi才被關閉。
WifiStateTracker 會創建 WifiMonitor 接收來自底層的事件, WifiService 和 WifiMonitor 是整個模塊的核心。WifiService 負責啓動關閉 wpa_supplicant、啓動關閉 WifiMonitor 監視線程和把命令下發給 wpa_supplicant,而 WifiMonitor 則負責從 wpa_supplicant 接收事件通知。
也就是說WifiService負責wifi整個流程的控制,而WifiMonitor負責監視底層的事件。