下载搜学网app
查学校 查学区 查辅导 查饭桌 查询中考数据
logo 点击咨询

讯为itop4418开发板实现Ethernet功能(三)


(3)SystemUI修改


拷贝systemui下所有.png文件到frameworks/base/packages/SystemUI/res/drawable下

修改frameworks/base/packages/SystemUI/res/values/strings.xml

    <string name="accessibility_no_sim">No SIM.</string>

下增加如下


<!-- Content description of the Ethernet connected icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --><string name="accessibility_ethernet_connected">Ethernet connected.</string><string name="accessibility_ethernet_disconnected">Ethernet disconnected.</string><string name="accessibility_ethernet_connecting">Ethernet connecting.</string>

修改frameworks/base/packages/SystemUI/res/layout/signal_cluster_view.xml

    <View

        android:layout_height="6dp"

        android:layout_width="6dp"

        android:visibility="gone"

        android:id="@+id/spacer"

        />

    <!--<FrameLayout

        android:id="@+id/wimax_combo"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:layout_marginEnd="-6dp"

        >

上增加


<FrameLayoutandroid:id="@+id/ethernet_combo"android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_marginRight="-6dp"><ImageViewandroid:id="@+id/ethernet_state"android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:scaleType="center"/></FrameLayout>

修改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java

    private int mWifiStrengthId = 0; 

下增加


private boolean mEthernetVisible = false;private int mEthernetStateId = 0;

在private String mWifiDescription, mMobileDescription, mMobileTypeDescription,mEthernetDescription;

后增加,mEthernetDescription如上




然后增加mEthernetGroup,mEthernet如下


    ViewGroup mWifiGroup, mMobileGroup,mEthernetGroup;

    ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType, mAirplane,mEthernet;


    @Override

    public void setIsAirplaneMode(boolean is, int airplaneIconId) {

        mIsAirplaneMode = is;

        mAirplaneIconId = airplaneIconId;


        apply();

    }

下增加


@Overridepublic void setEthernetIndicators(boolean visible, int stateIcon, int activityIcon,            String contentDescription) {mEthernetVisible = visible;mEthernetStateId = stateIcon;//mEthernetActivityId = activityIcon;mEthernetDescription = contentDescription;apply();}

mAirplane       = (ImageView) findViewById(R.id.airplane);

下增加


mEthernetGroup  = (ViewGroup) findViewById(R.id.ethernet_combo);mEthernet       = (ImageView) findViewById(R.id.ethernet_state);


在mAirplane       = null;下增加mEthernetGroup  = null;mEthernet    = null;

        if (mIsAirplaneMode) {

            mAirplane.setImageResource(mAirplaneIconId);

            mAirplane.setVisibility(View.VISIBLE);

        } else {

            mAirplane.setVisibility(View.GONE);

        }

下增加


if (mEthernetVisible) {mEthernetGroup.setVisibility(View.VISIBLE);mEthernet.setImageResource(mEthernetStateId);//mEthernetActivity.setImageResource(mEthernetActivityId);mEthernetGroup.setContentDescription(mEthernetDescription);} else {mEthernetGroup.setVisibility(View.GONE);}

然后增加mEthernetVisible如下




if (mMobileVisible && mWifiVisible && mIsAirplaneMode && mEthernetVisible) {


修改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java

增加



import android.net.ethernet.EthernetManager;import android.net.ethernet.EthernetStateTracker;import android.util.Slog;import com.android.systemui.R;

    String mContentDescriptionWimax;

下增加


String mContentDescriptionEthernet;//add by hclydao

    //wimax

    private boolean mWimaxSupported = false;

    private boolean mIsWimaxEnabled = false;

    private boolean mWimaxConnected = false;

    private boolean mWimaxIdle = false;

    private int mWimaxIconId = 0;

    private int mWimaxSignal = 0;

    private int mWimaxState = 0;

    private int mWimaxExtraState = 0;

下增加


// Ethernetboolean mShowEthIcon, mEthernetWaitingDHCP;boolean mEthernetPhyConnect=false ;int mEthernetIconId = 0;

    String mLastCombinedLabel = "";

下增加


    int mLastEthernetIconId = -1;

        void setIsAirplaneMode(boolean is, int airplaneIcon);

下增加


void setEthernetIndicators(boolean visible, int stateIcon, int activityIcon,                String contentDescription);

        filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);

下增加


filter.addAction(EthernetManager.ETH_STATE_CHANGED_ACTION);

cluster.setIsAirplaneMode(mAirplaneMode, mAirplaneIconId);

上增加如


cluster.setEthernetIndicators(mShowEthIcon,mEthernetIconId,-1,mContentDescriptionEthernet);

    else if (action.equals(WimaxManagerConstants.NET_4G_STATE_CHANGED_ACTION) ||

                    action.equals(WimaxManagerConstants.SIGNAL_LEVEL_CHANGED_ACTION) ||

                    action.equals(WimaxManagerConstants.WIMAX_NETWORK_STATE_CHANGED_ACTION)) {

                updateWimaxState(intent);

                refreshViews();

            } 

下增加


else if (action.equals(EthernetManager.ETH_STATE_CHANGED_ACTION)) {updateEth(intent);refreshViews();}

    updateWimaxIcons函数下增加函数





// ===== Ethernet ===================================================================

private final void updateEth(Intent intent) {final int event = intent.getIntExtra(EthernetManager.EXTRA_ETH_STATE, EthernetStateTracker.EVENT_HW_DISCONNECTED);Slog.d(TAG, "updateEth event=" + event);switch (event) {case EthernetStateTracker.EVENT_HW_CONNECTED:if (mEthernetWaitingDHCP)return;// else fallthroughcase EthernetStateTracker.EVENT_INTERFACE_CONFIGURATION_SUCCEEDED: {mEthernetWaitingDHCP = false;EthernetManager ethManager = (EthernetManager) mContext.getSystemService(mContext.ETH_SERVICE);if (ethManager.isEthDeviceAdded()) {mShowEthIcon = true;mEthernetIconId =R.drawable.ethernet_connected ; //  sEthImages[0]; mContentDescriptionEthernet = mContext.getString(R.string.accessibility_ethernet_connected);}return;}case EthernetStateTracker.EVENT_INTERFACE_CONFIGURATION_FAILED:mEthernetWaitingDHCP = false;//if(!mEthernetPhyConnect)// return ;mShowEthIcon = true;mEthernetIconId = R.drawable.ethernet_disconnected; // sEthImages[1]; mContentDescriptionEthernet = mContext.getString(R.string.accessibility_ethernet_disconnected);return;case EthernetStateTracker.EVENT_DHCP_START:mEthernetWaitingDHCP = true ;return;case EthernetStateTracker.EVENT_HW_PHYCONNECTED:mEthernetPhyConnect = true ;mShowEthIcon = true;mEthernetIconId =R.drawable.ethernet_connecting ; // sEthImages[2]; // 2mContentDescriptionEthernet = mContext.getString(R.string.accessibility_ethernet_connecting);return;case EthernetStateTracker.EVENT_HW_PHYDISCONNECTED:mEthernetPhyConnect = false ;mEthernetWaitingDHCP = false;mShowEthIcon = false;mEthernetIconId = -1;mContentDescriptionEthernet = null;return;case EthernetStateTracker.EVENT_HW_DISCONNECTED:mEthernetPhyConnect = false ;mEthernetWaitingDHCP = false;mShowEthIcon = false;mEthernetIconId = -1;mContentDescriptionEthernet = null;return ;case EthernetStateTracker.EVENT_HW_CHANGED:return;default:if (mEthernetWaitingDHCP)return;mShowEthIcon = false;mEthernetIconId = -1;mContentDescriptionEthernet = null;return;}}

        if (mBluetoothTethered) {

            combinedLabel = mContext.getString(R.string.bluetooth_tethered);

            combinedSignalIconId = mBluetoothTetherIconId;

            mContentDescriptionCombinedSignal = mContext.getString(

                    R.string.accessibility_bluetooth_tether);

        }

下增加


if (mShowEthIcon) {wifiLabel = mContentDescriptionEthernet;combinedSignalIconId = mEthernetIconId;mContentDescriptionCombinedSignal = mContentDescriptionEthernet;}

在这个下面增加


final boolean ethernetConnected = (mConnectedNetworkType == ConnectivityManager.TYPE_ETHERNET);if (ethernetConnected) {// TODO: icons and strings for Ethernet connectivitycombinedLabel = mConnectedNetworkTypeName;}

注释掉之前的 

/*

        final boolean ethernetConnected = (mConnectedNetworkType == ConnectivityManager.TYPE_ETHERNET);

        if (ethernetConnected) {

            combinedLabel = context.getString(R.string.ethernet_label);

        }

*//

在&& !ethernetConnected后增加 && !mShowEthIcon

在         || mLastWifiIconId                 != mWifiIconId

下增加

         || mLastEthernetIconId             != mEthernetIconId




        // the wimax icon on phones

        if (mLastWimaxIconId != mWimaxIconId) {

            mLastWimaxIconId = mWimaxIconId;

        }

下增加



// ethernet icon on phones

if (mLastEthernetIconId != mEthernetIconId) {mLastEthernetIconId = mEthernetIconId;// Phone UI not supported yet.}

基本上就修改这些地方


先执行下make update-api再编译。


严格按照上述步骤进行操作,即可实现Ehernet支持。



评论