android较新的版本中,已经加入了以太网功能,用户可在设置界面设置以太网的连接方式,如DHCP/静态IP/PPPOE。

显然,android的实现中默认以太网是作为一个出去的端口(相当于路由器的WAN口),用来分享外部的internet连接。

但是部分客户要求能实现以太网来分享设备的internet网络(4G/wifi),希望实现类似于wifi热点或者USB网络共享的功能,我把它定义为以太网网络共享(相当于路由器的lan口)。

实现以太网网络共享功能,分界面部分和framework两块。

开发

1、界面部分

网络共享的界面部分代码主要在src/com/android/settings/TetherSettings.java,我们需要在原有设置界面的wifi热点、USB网络共享等下面,加上我们的以太网网络共享的checkbox,仔细发现可看到如下代码:

 addPreferencesFromResource(R.xml.tether_prefs);

 

找到tether_prefs.xml,添加checkbox选项即可:

          android:key="enable_bluetooth_tethering"
        android:title="@string/bluetooth_tether_checkbox_text"
        android:persistent="false" />

            android:key="enable_ethernet_tethering"
        android:title="@string/ethernet_tether_checkbox_text"
        android:persistent="false" />

 

接下来还需要修改config.xml,添加eth0接口;修改几个strings.xml,比较简单,这里不再赘述。

此外,原有的以太网设置和新加的以太网网络共享只允许打开一个(即要么做wan口,要么做lan口),也需要在界面上控制,是通过调用ConnectivityManager/EthernetManager实现的。

2、framework部分

主要修改了tethering和connectivityManager部分,参考了usb网络共享。

 

 测试

点击以太网网络共享,pc通过网线接入设备,pc可获得IP且可通过设备的4G模块访问外网。

 

 bug及解决

1、拔出网线后,以太网网络共享界面的checkbox自动disable。

2、PC切换网络后,通过设备的dhcp服务器拿到IP的时间很长,60秒左右。

3、在设置界面打开wifi热点和以太网共享多次,概率出现再次点击界面后没有反应。

通过修改相关代码解决。

 

转自:(恋深圳)

https://download.csdn.net/download/awdxzcvbnm/10233980

代码下载:

https://download.csdn.net/download/wufoodjetsendl1001/10167610

https://download.csdn.net/download/awdxzcvbnm/10233980

 

更多相关文章

  1. Android使用VideoView播放网络视频
  2. Android调用系统自定义设置界面
  3. android网络连接工具类
  4. Android 登陆界面及记住用户名密码
  5. Android判断界面
  6. android主界面tab切换方式
  7. Android 检查网络状态是否可用 (工具类总结三)
  8. Android网络服务开发之http编程
  9. Android默认锁屏界面按键处理流程分析

随机推荐

  1. Android外部存储(/storage/emulated/0)无
  2. Android中获取TextView和EditText中的文
  3. android输入法的四种模式(弹出输入法式的
  4. Android启动管理器 - 开源
  5. Android创建AlertDialog对话框
  6. android中实现利用javamail的包发送邮件
  7. Android之基础建设之IWindow和IWindowSes
  8. Android发送短信与邮件
  9. framework之 ContextImpl文件解析
  10. Android 背景音乐播放