Android Wifi掃瞄的部分區分成被動掃描與主動掃描:
主動掃瞄:每隔一段時間廣播發送probe request的請求,在各個頻段上詢問AP的訊息,若有收到回應,做紀錄,超時的話則換到下個頻段進行廣播。
被動掃瞄:不發送請求,因為是以省電為目的,因此是單純接收AP傳送的beacon,通過接收到的beacon以獲取AP列表。
在Android的範疇又分為一般掃瞄與PNO掃瞄:
一般掃瞄:即為上方所提的掃瞄(WifiSettings和WifiConnectivityManager)。
PNO掃瞄:掃瞄週期相比於一般掃瞄長,只在特殊情況進行掃瞄,像是滅屏+不連接網路的情況下掃瞄(在WifiConntivityManager的模塊進行)。
主要進行的Android類為兩種:
WifiConnectivity 及 WifiSettings後續下發時皆為觸及WifiScanner,WifiConnectivity牽扯到的比較相似於手機本身的變化觸發的掃瞄,如螢幕亮暗。
WifiSettings觸發的掃瞄偏向於使用者進行某些動作觸發的掃瞄,如開關WIFI掃瞄功能等等。
最後,因為工作需要,這次做了一個簡單的追蹤WIFI主動掃描下發的其中一個流程,從上層至底層:APP -> Framework ->底層 hal。
以上是關於本次的紀錄。