Android2.3.4系统添加Ethernet框架支持(含去除状态栏信号图标及增加屏幕超时“永不关屏”选项)

先分享一下修改后的图片 1.增加状态栏网络图标(有连接时才显示),去除信号图标 2. 增加设置“以太网设置”选项 3. 增加“从不待机”选项,对应的实际值是-1 [attachment=3306] [attachment=3307] [attachment=3308]  [attachment=3311] 友善之臂有提供了1个软件用于设置开发板的有线网络。如
摘要由CSDN通过智能技术生成

 

先分享一下修改后的图片
1.增加状态栏网络图标(有连接时才显示),去除信号图标
2. 增加设置“以太网设置”选项
3. 增加“从不待机”选项,对应的实际值是-1
[attachment=3306]
[attachment=3307]
[attachment=3308] 
[attachment=3311]


友善之臂有提供了1个软件用于设置开发板的有线网络。如果你因某些原因不想使用或不方便使用这个软件,本文讲述如何移植让系统框架支持以太网的设置(DHCP动态分配IP或手动静态设置IP)

主要是利用android-x86现成的Ethernet框架,添加到Tiny6410的android源码中,增加系统对Ethernet的支持。
本文所用的是友善Tiny6410 2011-11-16版本的Android源代码。所有的修改都是基于此版本进行的。
如果你懒得修改,可以直接用附件中改好的代码直接覆盖,当然前提是你使用的开发板型号、源代码版本一样才行。附件的内容仅供参考,除了增加Ethernet框架之外,还更改了一些默认设置。
==========================================================================================
先把友善android源代码解压放好
一、准备工具:curl和repo
yum install curl
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > /bin/repo
chmod a+x /bin/repo

二、创建文件夹
mkdir /opt/FriendlyARM/mini6410/ android /android-x86
cd /opt/FriendlyARM/mini6410/ android /android-x86

三、全部源码太大,只下载相关部分源码,gingerbread-x86代表2.3版本的源码
repo init -u git://android-x86.git.sf.net/gitroot/android-x86/x86/platform/manifest.git -b gingerbread-x86
repo sync platform/frameworks/base
repo sync platform/packages/apps/Settings

四、移植framework部分(+号的行代表增加的内容,-号的行代表删除的内容)
源路径=/opt/FriendlyARM/mini6410/android/android-x86
目标路径=/opt/FriendlyARM/mini6410/android/Android-2.3.4
4.1.将源路径framework/base/ethernet 复制到目标路径的framework/base/目录下

4.2.修改目标路径的framework/base目录下的Android.mk
    vpn/java/android/net/vpn/IVpnService.aidl \
+    ethernet/java/android/net/ethernet/IEthernetManager.aidl \
    voip/java/android/net/sip/ISipSession.aidl \

4.3. 将源路径文件frameworks/base/services/java/com/android/server/EthernetService.java复制到目标路径frameworks/base/services/java/com/android/server/目录下

4.4. 修改目标路径framework/base/service/java/com/android/server目录下的ConnectivityService.java文件
import android.net.wifi.WifiStateTracker;
+import android.net.ethernet.EthernetStateTracker;
import android.net.wimax.WimaxManagerConstants;
//-----------------------------------------------------------------------------------------
if (mNetAttributes[n.mType] != null) {
    Slog.e(TAG, "Error in networkAttributes - ignoring attempt to redefine type " +
        n.mType);
    continue;
}
-if (mRadioAttributes[n.mRadio] == null) {
+if ((n.mType != ConnectivityManager.TYPE_ETHERNET) && (mRadioAttributes[n.mRadio] == null)) { //by bjw
    Slog.e(TAG, "Error in networkAttributes - ignoring attempt to use undefined " +
        "radio " + n.mRadio + " in network type " + n.mType);
    continue;
}
mNetAttributes[n.mType] = n;
mNetworksDefined++;
} catch(Exception e) {
+Slog.e(TAG, "wrong dev exception " + e); //by bjw
// ignore it - leave the entry null
}
//-----------------------------------------------------------------------------------------
wifiService.startWifi();
mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst;
wst.startMonitoring();
break;
+case ConnectivityManager.TYPE_ETHERNET: //by bjw
+if (DBG) Slog.v(TAG, "#########Starting Ethernet Service.");  //by bjw
+EthernetStateTracker est = new EthernetStateTracker(context, mHandler);  //by bjw
+EthernetService ethService = new EthernetService(context, est);  //by bjw
+ServiceManager.addService(Context.ETHERNET_SERVICE, ethService);  //by bjw
+mNetTrackers[ConnectivityManager.TYPE_ETHERNET] = est;  //by bjw
+est.startMonitoring(); //by bjw
+break;//by bjw
case ConnectivityManager.TYPE_MOBILE:
//-----------------------------------------------------------------------------------------
if (noMobileData) {
    if (DBG) Slog.d(TAG, "tearing down WiMAX networks due to setting");
    mNetTrackers[netType].teardown();
}
break;
default:
// Slog.e(TAG, "Trying to create a DataStateTracker for an unknown radio type " +
// mNetAttributes[netType].mRadio);

4.5. 将源路径framework/base/core/jni/android_net_ethernet.cpp复制到目标路径framework/base/core/jni/目录下

4.6. 修改目标路径framework/base/core/jni/AndroidRuntime.cpp文件
extern int register_android_net_wifi_WifiManager(JNIEnv* env);
+extern int register_android_net_ethernet_EthernetManager(JNIEnv* env);
extern int register_android_security_Md5MessageDigest(JNIEnv *env);
//-----------------------------------------------------------------------------------------
REG_JNI(register_android_net_wifi_WifiManager),
+REG_JNI(register_android_net_ethernet_EthernetManager),
REG_JNI(register_android_nfc_NdefMessage),

4.7. 修改目标路径framework/base/core/jni/Android.mk文件,添加ethernetJNI接口文件的编译项
android_net_wifi_Wifi.cpp \
+android_net_ethernet.cpp \
android_nio_utils.cpp \

4.8. 修改目标路径framework/base/java/android/content/Context.java
public static final String WIFI_SERVICE = "wifi";
+public static final String ETHERNET_SERVICE = "ethernet";

4.9. 修改目标路径frameworks/base/core/java/android/provider/Settings.java
        public static final String WIFI_ON = "wifi_on";

+        /**
+         * Ethernet related configurations
+         */
+        public static final String ETHERNET_ON      = "ethernet_on";
+        public static final String ETHERNET_MODE    = "ethernet_mode";
+        public static final String ETHERNET_IP      = "ethernet_ip";
+        public static fin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值