Migration and debugging of the Android system ---> how to modify the volume on the status bar of an Android device and hide the value when switching between the portrait and horizontal screens

Source: Internet
Author: User

In the past two days, due to a customer's requirement, the volume key on the status bar of the MID portrait screen is removed. So I tried to modify it, succeeded, and shared my experience.

Take a look at the modified one, as shown below.

Horizontal screen: there is a volume plus or minus key

Portrait screen: The volume plus or minus key is removed






Then let's talk about my solution.


First I checked the \ mx0831-0525 \ frameworks \ base \ packages \ systemui \ res \ Layout \ system_bar.xml File

<?xml version="1.0" encoding="utf-8"?><!-- * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.--><!-- TabletStatusBarView extends FrameLayout --><com.android.systemui.statusbar.tablet.TabletStatusBarView    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"    android:background="@drawable/system_bar_background"    >        <FrameLayout        android:id="@+id/bar_contents_holder"        android:layout_width="match_parent"        android:layout_height="@*android:dimen/system_bar_height"        android:layout_gravity="bottom"        >        <RelativeLayout            android:id="@+id/bar_contents"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:clipChildren="false"            >            <!-- notification icons & panel access -->            <include layout="@layout/system_bar_notification_area"                 android:layout_width="wrap_content"                android:layout_height="match_parent"                android:layout_alignParentRight="true"                android:layout_marginTop="1dp"                />            <!-- navigation controls -->            <LinearLayout                android:id="@+id/navigationArea"                android:layout_width="wrap_content"                android:layout_height="match_parent"                android:layout_alignParentLeft="true"                android:orientation="horizontal"                android:clipChildren="false"                android:clipToPadding="false"                >                <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"                    android:layout_width="@dimen/navigation_key_width"                    android:layout_height="match_parent"                    android:src="@drawable/ic_sysbar_back"                    systemui:keyCode="4"                    android:contentDescription="@string/accessibility_back"                    systemui:glowBackground="@drawable/ic_sysbar_highlight"                    />                <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home"                    android:layout_width="@dimen/navigation_key_width"                    android:layout_height="match_parent"                    android:src="@drawable/ic_sysbar_home"                    systemui:keyCode="3"                    android:contentDescription="@string/accessibility_home"                    systemui:glowBackground="@drawable/ic_sysbar_highlight"                    />                <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps"                    android:layout_width="@dimen/navigation_key_width"                    android:layout_height="match_parent"                    android:src="@drawable/ic_sysbar_recent"                    android:contentDescription="@string/accessibility_recent"                    systemui:glowBackground="@drawable/ic_sysbar_highlight"                    />               <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/sub"                                 android:background="@drawable/sub_normal"                     android:layout_width="70dip"                     android:layout_height="match_parent"                     android:visibility="invisible"     systemui:glowBackground="@drawable/ic_sysbar_highlight"                     systemui:keyCode="25"                     />  <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/add"                                android:background="@drawable/add_normal"                     android:layout_width="70dip"     android:layout_height="match_parent"                     android:visibility="invisible"                     systemui:glowBackground="@drawable/ic_sysbar_highlight"                     systemui:keyCode="24"                     />     <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/screenshot"                    android:layout_width="@dimen/navigation_key_width"                    android:layout_height="match_parent"                    android:src="@drawable/ic_sysbar_screenshot"                    android:contentDescription="@string/accessibility_screenshot"                    systemui:glowBackground="@drawable/ic_sysbar_highlight"                    />                 <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu"                    android:layout_width="@dimen/navigation_menu_key_width"                    android:layout_height="match_parent"                    android:src="@drawable/ic_sysbar_menu"                    systemui:keyCode="82"                    android:visibility="invisible"                    android:contentDescription="@string/accessibility_menu"                    systemui:glowBackground="@drawable/ic_sysbar_highlight"                    />            </LinearLayout>            <!-- fake space bar zone -->            <com.android.systemui.statusbar.policy.EventHole android:id="@+id/fake_space_bar"                android:layout_height="match_parent"                android:layout_width="0dp"                android:paddingLeft="8dip"                android:paddingRight="8dip"                android:layout_toRightOf="@+id/navigationArea"                android:layout_toLeftOf="@+id/notificationArea"                android:visibility="gone"                />        </RelativeLayout>    </FrameLayout>    <FrameLayout        android:id="@+id/bar_shadow_holder"        android:layout_width="match_parent"        android:layout_height="@*android:dimen/system_bar_height"        android:layout_gravity="bottom"        >        <!-- lights out shade -->        <RelativeLayout            android:id="@+id/bar_shadow"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:background="#FF000000"            android:visibility="gone"            >            <ImageView                android:id="@+id/dot0"                android:layout_width="80dip"                android:layout_height="48dip"                android:src="@drawable/ic_sysbar_lights_out_dot_small"                android:layout_alignParentLeft="true"                android:layout_alignParentBottom="true"                />            <ImageView                android:id="@+id/dot1"                android:layout_width="80dip"                android:layout_height="48dip"                android:src="@drawable/ic_sysbar_lights_out_dot_large"                android:layout_toRightOf="@+id/dot0"                android:layout_alignParentBottom="true"                />            <ImageView                android:id="@+id/dot2"                android:layout_width="80dip"                android:layout_height="48dip"                android:src="@drawable/ic_sysbar_lights_out_dot_small"                android:layout_toRightOf="@+id/dot1"                android:layout_alignParentBottom="true"                />            <ImageView                android:id="@+id/dot3"                android:layout_width="80dip"                android:layout_height="48dip"                android:src="@drawable/ic_sysbar_lights_out_dot_small"                android:layout_alignParentRight="true"                android:layout_alignParentBottom="true"                />        </RelativeLayout>    </FrameLayout></com.android.systemui.statusbar.tablet.TabletStatusBarView>


This file sets the Add button (volume plus button) and sub button (volume minus button) attributes. Android: visibility = "invisible" is set to invisible.

However, this will not be able to achieve the disappearance and display effect when switching between landscape and landscape screens.

Then I checked the mx0831-0525 \ frameworks \ base \ packages \ systemui \ SRC \ com \ Android \ systemui \ statusbar \ tablet \ tabletstatusbar. Java File

The onconfigurationchanged (configuration newconfig) method of the file is modified as follows:


 @Override    protected void onConfigurationChanged(Configuration newConfig) {        loadDimens();//edited by ouyangpeng startif(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){mVolumeUpButton.setVisibility(View.VISIBLE);mVolumeDownButton.setVisibility(View.VISIBLE);}else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){mVolumeUpButton.setVisibility(View.GONE);mVolumeDownButton.setVisibility(View.GONE);}        //edited by ouyangpeng end        mNotificationPanelParams.height = getNotificationPanelHeight();        WindowManagerImpl.getDefault().updateViewLayout(mNotificationPanel,                mNotificationPanelParams);        mRecentsPanel.updateValuesFromResources();        mShowSearchHoldoff = mContext.getResources().getInteger(                R.integer.config_show_search_delay);        updateSearchPanel();    }


In this way, you can dynamically set the disappearance and display of the volume key based on the horizontal and vertical screen of Android.


========================================================== ========================================================== ============================

Author: Ouyang Peng: Welcome to repost. sharing with others is the source of progress!

Reprinted Please retain the original address: http://blog.csdn.net/ouyang_peng

========================================================== ========================================================== ============================

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.