Android5.1网络切换策略分析

在Android 5.1中,网络切换策略发生了变化,不再像4.4那样简单修改配置文件。系统通过网络评分决定优先级,以太网要设为最高优先级,需要调整 EthernetNetworkFactory 中的评分值。本文跟踪了从 EthernetServiceImpl 到 ConnectivityService 的过程,重点介绍了设置以太网优先级的方法,即增大 EthernetNetworkFactory 的分数至110,确保高于WIFI的100分。
摘要由CSDN通过智能技术生成

最近在在5.1移植了以太网过来,移植的过程并没有什么大问题,修改了框架上的代以及添加了Settings代码,以太网调试就基本完工了,后面只是修改下布局即可。但是网络切换策略就有所变化了,就不得不重新认识5.1的网络切换策略了。
在android4.4上,想实现以太网为优先级最高(意思是以太网打开了,WIFI就无法打开),方法很简单,只需要在default.xml和ConnectivityServicet修改就好了。但在5.1系统上就做了新的调整,具体改动的原因不明,他是依靠网络评分的大小来确定谁的优先级高,废话不多说,以以太网为例子,进行追踪。

1、frameworks\opt\net\ethernet\java\com\android\server\ethernet\EthernetServiceImpl

  public EthernetServiceImpl(Context context) {
        mContext = context;
        Log.i(TAG, "Creating EthernetConfigStore");
        mEthernetConfigStore = new EthernetConfigStore();
        mIpConfiguration = mEthernetConfigStore.readIpAndProxyConfigurations();

        Log.i(TAG, "Read stored IP configuration: " + mIpConfiguration);

        mTracker = new EthernetNetworkFactory(mListeners); //创建本地的网络工厂
     mTracker.setContext(context); //add by peng
   }

2、frameworks\opt\net\ethernet\java\com\android\server\ethernet\EthernetNetworkFactory

 EthernetNetworkFactory(RemoteCallbackList<IEthernetServiceListener> listeners) {
        mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_ETHERNET, 0, NETWORK_TYPE, "");
        mLinkProperties = new LinkProperties();
        initNetworkCapabilities(); //初始化网络参数,比如,上下行速度、传输类型等
        mListeners = listeners;
    }
    //我们看看这个类的start函数
     public synchronized void start(Context context, Handler target) {
        // The services we use.
        IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
        mNMService = INetworkManagementService.Stub.asInterface(b);
        mEthernetManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE); //获取服务

        // Interface match regex.
        mIfaceMatch = context.getResources().getString(
                com
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值