android4.2系统,实现应用层调用以太网/3G网卡
来源:互联网 发布:shell编程工具 编辑:程序博客网 时间:2024/06/04 18:22
android开发的SDK中,没有提供3G网卡和以太网的操作方法,但是有些设备(包括平板和手机)可以在设置中开启“以太网”功能,就可以利用usb接口转网线,或者3G网卡连接上网。也就是说系统中提供了Ethernet(以太网)的开启功能,不过函数接口没有公开,所以没有android源码的话,是不可能操作以太网的。
因此在开发中遇到了这样的问题:当自己开发的android设备屏蔽了系统的launcher时,就没有了设置界面,而设置中以太网是默认关闭的。那么自己开发的其他应用便无法打开以太网。于是乎,po主潜心研究了framework层的Ethernet的相关代码。有用的代码在源码中的位置(使用的是android4.2.2,全志的板子):
\frameworks\base\ethernet\java\android\net\ethernet
\frameworks\base\services\java\com\android\server\EthernetService.java
当然自己在研究相关源码时,走了很多弯路,从设置界面的代码一直研究到内核。。刚开始的做法是定制系统,直接让Ethernet在系统中默认启动,参考了网上别人的做法,修改了很多配置文件。虽然做到了在系统启动时,“使用以太网”已经默认打了钩,但是仍然需要点击两次才可以使用以太网。也就是说如果去掉系统默认launcher界面,没有设置界面可以点击,仍然无法连接以太网。
于是乎继续深究。。此处省略阅读源码五百万行。。最后终于找到解决办法:
额。。。啰嗦一句,虽然我研究的是android源码,但要实现的是在apk中打开和关闭以太网,具体实现方法如下:
一:导入framework层的classes.jar包,顺序放在android.jar前面。路径:out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar。
二:在应用中调用EthernetManager类
1.EthernetManager mEthManager;
mEthManager = EthernetManager.getInstance();
2. //开启3G网卡(以太网)功能
public void enableEth(String devName){
final ContentResolver cResolver = getActivity().getContentResolver();
// final int ethconfig1 = Settings.Secure.getInt(cResolver, Settings.Secure.ETHERNET_CONF, 0);
Settings.Secure.putString(cResolver, Settings.Secure.ETHERNET_IFNAME, devName);
Settings.Secure.putInt(cResolver, Settings.Secure.ETHERNET_CONF, 1);
// Settings.Secure.putInt(cResolver, Settings.Secure.ETHERNET_MODE, EthernetDevInfo.ETHERNET_CONN_MODE_DHCP);
// System.out.println("++++b+++ethconfig1+1=ETHERNET_HAS_CONFIG++++++"+ethconfig1);
mEthManager.setEnabled(true);
}
这里面在系统中有一些写进数据库的操作。
3. 在需要开启以太网的位置调用该方法:
enableEth("eth0");
之所以传参“eth0”,是我写死的做法,因为一般不会出现插入多个网线或3G网卡的情况,而第一个插入的名字就叫“eth0”。别问为什么,源码就是这么规定的
三:添加相应权限(以下几个只是举例,具体需要哪些权限根据实际而定)
//NVSIPCam Manifest
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
这样就可以自己写apk开启以太网/3G网卡了,而不需要去设置界面重启以太网等操作。网上相关的资料非常少,基本靠自己研究源码实现。
- android4.2系统,实现应用层调用以太网/3G网卡
- Android 实现以太网口共享3G网卡连接外网
- 嵌入式Linux系统实现3G网卡拨号
- 嵌入式Linux系统实现3G网卡拨号
- 嵌入式Linux系统实现3G网卡拨号
- 嵌入式Linux系统实现3G网卡拨号
- 嵌入式Linux系统实现3G网卡拨号
- 嵌入式Linux系统实现3G网卡拨号
- android4.2 telephone应用层分析
- 3G上网卡做以太网备用通道的方案
- android4.2去掉3g图标
- android4.0 通过DHCP实现以太网连接
- 3G上网卡在Liunx系统上实现上网的过程
- 以太网2层的几个问题
- Android4.0 Telephony应用层详解
- android4.0 系统层hdmi开关
- Android4.2之Camera系统HAL调用流程
- Android4.2之Camera系统HAL调用流程
- Java内存分配、管理小结
- visual studio T4文本模板转换过程
- 哥哥哥灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
- 五子棋 人人加人机对弈
- 精妙Sql语句
- android4.2系统,实现应用层调用以太网/3G网卡
- http://quick.xiangrikui.com/blog/1734239.html
- Java类加载全过程
- 网格线:是垃圾,还是视觉辅助?
- sitemesh3配置
- swt 界面开发
- Win7安装IIS
- OCP-1Z0-051-题目解析-第17题
- 技术和管理经验总结