android Tether 分析

来源:互联网 发布:windows多线程编程视频 编辑:程序博客网 时间:2024/06/01 08:47

     最近研究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就不一致了

1 0
原创粉丝点击