Android5.1更改网络优先级

来源:互联网 发布:seo网络推广职业规划 编辑:程序博客网 时间:2024/06/08 03:43

5.1以前请参考:

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


平台

RK3288 + android5.1


需求

修改网络连接优先级为

Ethernet > Mobile > Wifi


修改

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.javaold mode 100644new mode 100755index 09b3c9b..00fba2a--- 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@@ -1734,7 +1734,7 @@ public final class DataConnection extends StateMachine {             misc.subscriberId = mPhone.getSubscriberId();             mNetworkAgent = new DcNetworkAgent(getHandler().getLooper(), mPhone.getContext(),                     "DcNetworkAgent", mNetworkInfo, makeNetworkCapabilities(), mLinkProperties,-                    50, misc);+                    100, misc);         }          @Overridediff --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.javaold mode 100644new mode 100755index 4fce2ec..fdb59b1--- 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@@ -152,7 +152,7 @@ public class DctController extends Handler {         mNetworkFactory[index] = new TelephonyNetworkFactory(this.getLooper(),                 mPhones[index].getContext(), "TelephonyNetworkFactory", phoneBase,                 mNetworkFilter[index]);-        mNetworkFactory[index].setScoreFilter(50);+        mNetworkFactory[index].setScoreFilter(100);         mNetworkFactoryMessenger[index] = new Messenger(mNetworkFactory[index]);         cm.registerNetworkFactory(mNetworkFactoryMessenger[index], "Telephony");     }

说明

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

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

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

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

            mNetworkAgent = new WifiNetworkAgent(getHandler().getLooper(), mContext,                    "WifiNetworkAgent", mNetworkInfo, mNetworkCapabilitiesFilter,                    mLinkProperties, 60);

                mNetworkFactory = new WifiNetworkFactory(getHandler().getLooper(), mContext,                        NETWORKTYPE, mNetworkCapabilitiesFilter);                mNetworkFactory.setScoreFilter(60);


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

private static final int NETWORK_SCORE = 150;                    // Create our NetworkAgent.                    mNetworkAgent = new NetworkAgent(mFactory.getLooper(), mContext,                            NETWORK_TYPE, mNetworkInfo, mNetworkCapabilities, mLinkProperties,                            NETWORK_SCORE) {

// Create and register our NetworkFactory.

        mFactory = new LocalNetworkFactory(NETWORK_TYPE, context, target.getLooper());
    /**
     * Updates interface state variables.     * Called on link state changes or on startup.     */    private void updateInterfaceState(String iface, boolean up) {        if (!mIface.equals(iface)) {            return;        }        Log.d(TAG, "updateInterface: " + iface + " link " + (up ? "up" : "down"));        synchronized(this) {            mLinkUp = up;            mNetworkInfo.setIsAvailable(up);            if (!up) {                // Tell the agent we're disconnected. It will call disconnect().                mNetworkInfo.setDetailedState(DetailedState.DISCONNECTED, null, mHwAddr);                sendEthernetStateChangedBroadcast(EthernetManager.ETHER_STATE_DISCONNECTED);            }            updateAgent();            // set our score lower than any network could go            // so we get dropped.  TODO - just unregister the factory            // when link goes down.            mFactory.setScoreFilter(up ? NETWORK_SCORE : -1);        }    }