android中wifi原理詳解 轉

2021-08-31 21:28:23 字數 1790 閱讀 5025

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

二:wifi模組的初始化::

在 systemserver 啟動的時候,會生成乙個connectivityservice的例項,

try catch (throwable e)

connectivityservice 的建構函式會建立wifiservice,

if (dbg) log.v(tag, "starting wifi service.");

mwifistatetracker = new wifistatetracker(context, handler);

wifiservice wifiservice = new wifiservice(context, mwifistatetracker);

servicemanager.addservice(context.wifi_service, wifiservice);

wifistatetracker 會建立wifimonitor 接收來自底層的事件,wifiservice和wifimonitor 是整

個模組的核心。wifiservice 負責啟動關閉wpa_supplicant、啟動關閉wifimonitor 監視執行緒

和把命令下發給wpa_supplicant,而wifimonitor則負責從wpa_supplicant 接收事件通知。

具體流程圖如下:

第三部分:wifi模組的啟動(使能)

wirelesssettings 在初始化的時候配置了由wifienabler 來處理wifi 按鈕,

private void inittoggles()

if (!wifinative.startsupplicant())

mwifistatetracker.starteventloop();

}// success!

persistwifienabled(enable);

updatewifistate(eventualwifistate);

return true;

}當使能成功後,會廣播傳送wifi_state_changed_action 這個intent通知外界wifi

已經成功使能了。wifienabler 建立的時候就會向android註冊接收

wifi_state_changed_action,因此它會收到該intent,從而開始掃瞄。

private void handlewifistatechanged(int wifistate)

具體流程如下流程圖所示:

第四部分:查詢熱點(ap)

上一節(第三部分:wifi開啟)中講到wifi模組開啟後會對外傳送wifi_state_changed_action。wifilayer中註冊了action的receiver。

當wifilayer收到此action後開始scan的流程,具體如下:

當wpa_supplicant 處理完scan 命令後,它會向控制通道傳送事件通知掃瞄完成,從wifi_wait_for_event 函式會接收到該事件,由此wifimonitor中的monitorthread 會被執行來出來這個事件:

第五部分:配置 ap 引數

當使用者在 wifisettings 介面上選擇了乙個ap 後,會顯示配置ap 引數的乙個對話方塊:

第六部分:wifi連線

具體流程參見以下流程圖:

給我老師的人工智慧教程打call!

Android 中Scheme協議的使用詳解

伺服器下發跳轉路徑,客戶端根據 伺服器下發跳轉路徑跳轉相應的頁面 zymobi 3g2win 9999 macthdetail?macthid 222 time 10001scheme 代表該schema 協議名稱 zymobi host 代表schema作用於哪個位址域 3g2win port 代...

Android 中Scheme協議的使用詳解

一 首先什麼是scheme?客戶端應用可以向系統註冊乙個 url scheme,該scheme用於從瀏覽器或其他應用中啟動本應用。通過指定的 url 字段,可以讓應用在被調起後直接開啟某些特定頁面。也可以執行某些指定動作。綜上scheme使用場景大致分以下幾種 1.伺服器下發跳轉路徑,客戶端根據伺服...

Android中如何使用WIFI來連線ADB

有的時候,我們限於種種原因,無法使用usb來連線裝置進行除錯,此時,可以通過wifi連線來進行。首先開啟手機的wifi設定,使其連線到網路。然後,需要在手機上對adb連線埠進行設定,這裡需要有root許可權的終端 terminal 應用,這種型別的應用在各個market都有不少,選擇乙個適合的就可以...