android4.0 wifi模塊詳細解析

android4.0 wifi模塊詳細解析

ID:18804124

大小:58.00 KB

頁數(shù):22頁

時間:2018-09-25

android4.0 wifi模塊詳細解析_第1頁
android4.0 wifi模塊詳細解析_第2頁
android4.0 wifi模塊詳細解析_第3頁
android4.0 wifi模塊詳細解析_第4頁
android4.0 wifi模塊詳細解析_第5頁
資源描述:

《android4.0 wifi模塊詳細解析》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、android4.0wifi模塊詳細解析這幾天閑著沒事,我就隨便拿起Android源碼看看。以下要講的是在ICS中wifi初始化的一些流程。涉及的文件有:SystemServer.javaWifiSettings.javaWifiEnabler.javaWifiManager.javaWifiService.javaWifiStateMachine.javaandroid_net_wifi_wifi.cppwifi.c首先從SystemServer.java開始,它做了3個動作:1.添加注冊Conne

2、ctivityService連接服務,它跟所有手機的無線通信都有聯(lián)系,包括wifi,藍牙,2g網(wǎng)絡,3g網(wǎng)絡等connectivity=newConnectivityService(context,networkManagement,networkStats,networkPolicy);ServiceManager.addService(Context.CONNECTIVITY_SERVICE,connectivity);2.管理開機wifi開啟與否的問題wifi.checkAndStartWifi

3、();publicvoidcheckAndStartWifi(){mAirplaneModeOn.set(isAirplaneModeOn());mPersistWifiState.set(getPersistedWifiState());booleanwifiEnabled=shouldWifiBeEnabled()

4、

5、testAndClearWifiSavedState();setWifiEnabled(wifiEnabled);mWifiWatchdogStateMachine=WifiWatc

6、hdogStateMachine.makeWifiWatchdogStateMachine(mContext);}3.添加注冊wifi的核心服務wifiservicewifi=newWifiService(context);ServiceManager.addService(Context.WIFI_SERVICE,wifi);好了,機器啟動的時候動作就這些。要開啟wifi,還需要人在設置界面進行開啟?!は旅鎸⒁徊讲浇榻Bwifi是怎樣開啟起來的進入wifi設置界面,相關文件WifiSettings.j

7、ava開啟Wifi的組件是一個CompoundButton,跟它關聯(lián)起來的是一個WifiEnabler.java類,它是在WifiSettings里面初始化的publicvoidonActivityCreated(BundlesavedInstanceState){mWifiEnabler=newWifiEnabler(activity,actionBarSwitch);}當用戶點擊wifi的開啟按鈕時候,會觸發(fā)WifiEnabler里面的onCheckedChanged函數(shù)publicvoidonC

8、heckedChanged(CompoundButtonbuttonView,booleanisChecked){if(mWifiManager.setWifiEnabled(isChecked)){mSwitch.setEnabled(false);}else{Toast.makeText(mContext,R.string.wifi_error,Toast.LENGTH_SHORT).show();}在onCheckedChanged函數(shù)里面,調用了WifiManager的setWifiEnabl

9、ed方法publicbooleansetWifiEnabled(booleanenabled){try{returnmService.setWifiEnabled(enabled);}catch(RemoteExceptione){returnfalse;}}它返回的是mService.setWifiEnabled(enabled),這里的mService是WifiService的代理,所以它實際調用的是wifiService里面的setWifiEnabled函數(shù)publicclassWifiServ

10、iceextendsIWifiManager.Stub,我們可以看到WifiService繼承一個接口IWifiManager.Stub,凡是繼承了像這種形式寫法的接口服務,都可以進行遠程調用,這就是Android內部的aidl通信。接下來進入wifiservicepublicsynchronizedbooleansetWifiEnabled(booleanenable){mWifiStateMachine.setWifiEnabled(enable);

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。