android Tether 分析
2015-12-16 15:02
1271 查看
最近研究Android下有线网络的DHCP和路由方案,分析了一些Android 共享网络管理的有关代码。涉及以下文件:
ConnectivityService.java
NetworkmanagementService.java,
TetherSetting.java
Tethering.java
当用户点击设置应用中的LAN 共享 checkbox按钮后,调用了TetherSetting.java中的OnPreferenceClick(),它 调用setUsbTethering(),它调用cm.setUsbTethering()其中cm是IConnectivityManager的实例,cm调用了ConnectivityService.java中实现,即setUsbTethering(),它又调用Tethering.java中的setUsbTethering(),它又调用Tethering.java中的tetherUsb()中的NMService.startTethering(),它又调用NetworkManagementService.java中的startTethering()函数,它又调用了doCommand(),它又调用了hal层的netd接口,netd中有commandListener.cpp实现,它又调用了TetherController.cpp中的startTethering接口,最后调用dnsmasq,去实现。
在设置应用中的网络共享栏的布局文件对应于packages/apps/Settings/res/xml/tether_prefs.xml,其中定义了界面文字对应的key 值,在TetherSetting.java中对xml文件中按照字段进行获取和初始化。其中key值,Java文件和xml文件要保持一致,否则preference与对应的CheckboxPreference就不一致了
ConnectivityService.java
NetworkmanagementService.java,
TetherSetting.java
Tethering.java
当用户点击设置应用中的LAN 共享 checkbox按钮后,调用了TetherSetting.java中的OnPreferenceClick(),它 调用setUsbTethering(),它调用cm.setUsbTethering()其中cm是IConnectivityManager的实例,cm调用了ConnectivityService.java中实现,即setUsbTethering(),它又调用Tethering.java中的setUsbTethering(),它又调用Tethering.java中的tetherUsb()中的NMService.startTethering(),它又调用NetworkManagementService.java中的startTethering()函数,它又调用了doCommand(),它又调用了hal层的netd接口,netd中有commandListener.cpp实现,它又调用了TetherController.cpp中的startTethering接口,最后调用dnsmasq,去实现。
在设置应用中的网络共享栏的布局文件对应于packages/apps/Settings/res/xml/tether_prefs.xml,其中定义了界面文字对应的key 值,在TetherSetting.java中对xml文件中按照字段进行获取和初始化。其中key值,Java文件和xml文件要保持一致,否则preference与对应的CheckboxPreference就不一致了
相关文章推荐
- android studio 更新 Gradle错误解决方法
- Android-JNI(5)-C语言调用Java函数
- Android中线程池ExecutorService的使用
- android 关于读取SD卡或者U盘的一些方法
- Android Studio添加assets文件夹
- android - Activity启动模式
- Android Studio导入recyclerview,cardview
- Android5.0练习
- Android实战 - 音心播放器 (MusciActivity-专辑图片获得,基本控制实现)
- Android 设计模式 之 单例模式
- Android IntentService
- 学习Android系统控件SwipeRefreshLayout
- Android并发编程之如何使用ReentrantReadWriteLock替代synchronized来提高程序的效率
- Android:新手必备的常用代码片段整理(二)
- Android百度推送使用详解
- Android 中 SQLite 性能优化
- Android避免启动时闪一下黑屏
- 【android_温故知新】菜单
- 从CM刷机过程和原理分析Android系统结构
- Android中的windowSoftInputMode属性详解