android4.0 wifi模块详细解析

android4.0 wifi模块详细解析

ID:18804124

大小:58.00 KB

页数: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模块详细解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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连接服务,它跟所有手机的无线通信都有联系,包括wifi,蓝牙,2g网络,3g网络等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,还需要人在设置界面进行开启。·下面将一步步介绍wifi是怎样开启起来的进入wifi设置界面,相关文件WifiSettings.j

7、ava开启Wifi的组件是一个CompoundButton,跟它关联起来的是一个WifiEnabler.java类,它是在WifiSettings里面初始化的publicvoidonActivityCreated(BundlesavedInstanceState){mWifiEnabler=newWifiEnabler(activity,actionBarSwitch);}当用户点击wifi的开启按钮时候,会触发WifiEnabler里面的onCheckedChanged函数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函数里面,调用了WifiManager的setWifiEnabl

9、ed方法publicbooleansetWifiEnabled(booleanenabled){try{returnmService.setWifiEnabled(enabled);}catch(RemoteExceptione){returnfalse;}}它返回的是mService.setWifiEnabled(enabled),这里的mService是WifiService的代理,所以它实际调用的是wifiService里面的setWifiEnabled函数publicclassWifiServ

10、iceextendsIWifiManager.Stub,我们可以看到WifiService继承一个接口IWifiManager.Stub,凡是继承了像这种形式写法的接口服务,都可以进行远程调用,这就是Android内部的aidl通信。接下来进入wifiservicepublicsynchronizedbooleansetWifiEnabled(booleanenable){mWifiStateMachine.setWifiEnabled(enable);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。