android4.0 wifi模塊詳細(xì)解析

android4.0 wifi模塊詳細(xì)解析

ID:18804124

大小:58.00 KB

頁(yè)數(shù):22頁(yè)

時(shí)間:2018-09-25

android4.0 wifi模塊詳細(xì)解析_第1頁(yè)
android4.0 wifi模塊詳細(xì)解析_第2頁(yè)
android4.0 wifi模塊詳細(xì)解析_第3頁(yè)
android4.0 wifi模塊詳細(xì)解析_第4頁(yè)
android4.0 wifi模塊詳細(xì)解析_第5頁(yè)
資源描述:

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

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

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

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

4、

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

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

7、ava開(kāi)啟Wifi的組件是一個(gè)CompoundButton,跟它關(guān)聯(lián)起來(lái)的是一個(gè)WifiEnabler.java類,它是在WifiSettings里面初始化的publicvoidonActivityCreated(BundlesavedInstanceState){mWifiEnabler=newWifiEnabler(activity,actionBarSwitch);}當(dāng)用戶點(diǎn)擊wifi的開(kāi)啟按鈕時(shí)候,會(huì)觸發(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ù)里面,調(diào)用了WifiManager的setWifiEnabl

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

10、iceextendsIWifiManager.Stub,我們可以看到WifiService繼承一個(gè)接口IWifiManager.Stub,凡是繼承了像這種形式寫(xiě)法的接口服務(wù),都可以進(jìn)行遠(yuǎn)程調(diào)用,這就是Android內(nèi)部的aidl通信。接下來(lái)進(jìn)入wifiservicepublicsynchronizedbooleansetWifiEnabled(booleanenable){mWifiStateMachine.setWifiEnabled(enable);

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

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

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