安卓联网优先级

https://blog.csdn.net/ansondroider/article/details/78040544

5.1以前请参考:

http://blog.csdn.net/u013686019/article/details/51447129

平台

RK3288 + android5.1

需求

修改网络连接优先级为

Ethernet > Mobile > Wifi

修改

[java] view plain copy
  1. diff --git a/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java  
  2. old mode 100644  
  3. new mode 100755  
  4. index 09b3c9b..00fba2a  
  5. --- a/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java  
  6. +++ b/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java  
  7. @@ -1734,7 +1734,7 @@ public final class DataConnection extends StateMachine {  
  8.              misc.subscriberId = mPhone.getSubscriberId();  
  9.              mNetworkAgent = new DcNetworkAgent(getHandler().getLooper(), mPhone.getContext(),  
  10.                      "DcNetworkAgent", mNetworkInfo, makeNetworkCapabilities(), mLinkProperties,  
  11. -                    50, misc);  
  12. +                    100, misc);  
  13.          }  
  14.    
  15.          @Override  
  16. diff --git a/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DctController.java b/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DctController.java  
  17. old mode 100644  
  18. new mode 100755  
  19. index 4fce2ec..fdb59b1  
  20. --- a/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DctController.java  
  21. +++ b/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DctController.java  
  22. @@ -152,7 +152,7 @@ public class DctController extends Handler {  
  23.          mNetworkFactory[index] = new TelephonyNetworkFactory(this.getLooper(),  
  24.                  mPhones[index].getContext(), "TelephonyNetworkFactory", phoneBase,  
  25.                  mNetworkFilter[index]);  
  26. -        mNetworkFactory[index].setScoreFilter(50);  
  27. +        mNetworkFactory[index].setScoreFilter(100);  
  28.          mNetworkFactoryMessenger[index] = new Messenger(mNetworkFactory[index]);  
  29.          cm.registerNetworkFactory(mNetworkFactoryMessenger[index], "Telephony");  
  30.      }  


说明

网络优先级采用新的score机制.

以上改法, 将移动网络的score从50 加到 100.

从当前代码中看, Ethernet (150), Wifi(60)

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java(Wifi)

[java] view plain copy
  1. mNetworkAgent = new WifiNetworkAgent(getHandler().getLooper(), mContext,  
  2.         "WifiNetworkAgent", mNetworkInfo, mNetworkCapabilitiesFilter,  
  3.         mLinkProperties, 60);  
[java] view plain copy
  1. mNetworkFactory = new WifiNetworkFactory(getHandler().getLooper(), mContext,  
  2.         NETWORKTYPE, mNetworkCapabilitiesFilter);  
  3. mNetworkFactory.setScoreFilter(60);  

frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java(Ethernet)

[java] view plain copy
  1. private static final int NETWORK_SCORE = 150;   
  2.                    // Create our NetworkAgent.  
  3.                     mNetworkAgent = new NetworkAgent(mFactory.getLooper(), mContext,  
  4.                             NETWORK_TYPE, mNetworkInfo, mNetworkCapabilities, mLinkProperties,  
  5.                             NETWORK_SCORE) {  

// Create and register our NetworkFactory.

        mFactory = new LocalNetworkFactory(NETWORK_TYPE, context, target.getLooper());

[java] view plain copy
  1. /**  
[java] view plain copy
    1.  * Updates interface state variables.  
    2.  * Called on link state changes or on startup.  
    3.  */  
    4. private void updateInterfaceState(String iface, boolean up) {  
    5.     if (!mIface.equals(iface)) {  
    6.         return;  
    7.     }  
    8.     Log.d(TAG, "updateInterface: " + iface + " link " + (up ? "up" : "down"));  
    9.   
    10.     synchronized(this) {  
    11.         mLinkUp = up;  
    12.         mNetworkInfo.setIsAvailable(up);  
    13.         if (!up) {  
    14.             // Tell the agent we're disconnected. It will call disconnect().  
    15.             mNetworkInfo.setDetailedState(DetailedState.DISCONNECTED, null, mHwAddr);  
    16.             sendEthernetStateChangedBroadcast(EthernetManager.ETHER_STATE_DISCONNECTED);  
    17.         }  
    18.         updateAgent();  
    19.         // set our score lower than any network could go  
    20.         // so we get dropped.  TODO - just unregister the factory  
    21.         // when link goes down.  
    22.         mFactory.setScoreFilter(up ? NETWORK_SCORE : -1);  
    23.     }  

猜你喜欢

转载自www.cnblogs.com/ancongliang/p/9082884.html