话不多说。直接贴上补丁:
其中补丁的下载地址:https://download.csdn.net/download/Mrdeath/11968049
diff --git a/frameworks/base/core/java/android/provider/Settings.java b/frameworks/base/core/java/android/provider/Settings.java
index ed82d5e..e2febbd 100644
--- a/frameworks/base/core/java/android/provider/Settings.java
+++ b/frameworks/base/core/java/android/provider/Settings.java
@@ -1592,6 +1592,12 @@ public final class Settings {
*/
public static final String SCREENSHOT_BUTTON_SHOW="screenshot_button_show";
+ /**
+ *hide system bar
+ * @hide
+ */
+ public static final String SYSTEMBAR_HIDE="systembar_hide";
+
/**
* @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead
*/
diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index 6e712c9..0c9a5d8 100755
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -19,6 +19,7 @@
<resources>
<!-- should show the screenshot button default -->
<bool name="def_screenshot_button_show">false</bool>
+ <bool name="def_systembar_hide">false</bool>
<!-- the store location of screen capture by default-->
<string name="def_screenshot_location">/mnt/sdcard</string>
<bool name="def_dim_screen">true</bool>
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index eb0fad7..a86090f 100755
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1996,7 +1996,8 @@ public class DatabaseHelper extends SQLiteOpenHelper {
R.integer.def_hdmi_lcd_timeout);
loadBooleanSetting(stmt, Settings.System.SCREENSHOT_BUTTON_SHOW,
R.bool.def_screenshot_button_show);
-
+ loadBooleanSetting(stmt, Settings.System.SYSTEMBAR_HIDE,
+ R.bool.def_systembar_hide);
String enableUms= SystemProperties.get("ro.factory.hasUMS","false");
if("true".equals(enableUms))//if has UMS function,flash is primary storage
{
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 59b0057..0c39547 100755
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -370,6 +370,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
addNavigationBar();
+
+ changeBarHideStatus();
// Lastly, call to the icon policy to install/update all the icons.
mIconPolicy = new PhoneStatusBarPolicy(mContext);
@@ -775,6 +777,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(ACTION_DEMO);
+ filter.addAction("com.tchip.changeBarHideStatus");
context.registerReceiver(mBroadcastReceiver, filter);
// listen for USER_SETUP_COMPLETE setting (per-user)
@@ -1001,6 +1004,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
};
private boolean mBarIsAdd = true;
+ private void changeBarHideStatus()
+ {
+ boolean hide_systembar = Settings.System.getInt(mContext.getContentResolver(),Settings.System.SYSTEMBAR_HIDE,0)==1;
+
+ if(hide_systembar)
+ removeBar(false);
+ else{
+ addBar();
+ }
+ }
private void addBarInside(){
if (!mBarIsAdd){
Log.d(TAG,"add Bar");
@@ -1014,7 +1027,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
}
}
- private void removeBar(){
+ private void removeBar(){
+ removeBar(true);
+ }
+ private void removeBar(boolean needToast){
if (mBarIsAdd){
Log.d(TAG,"remove Bar");
if (mNavigationBarView != null)
@@ -1022,6 +1038,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
if (mStatusBarWindow != null)
mWindowManager.removeView(mStatusBarWindow);
mBarIsAdd = false;
+ if(needToast)
Toast.makeText(mContext, mContext.getResources().getString(R.string.hidebar_msg), 3000).show();
}
}
@@ -2722,6 +2739,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode {
}
}
}
+ }else if("com.tchip.changeBarHideStatus".equals(action))
+ {
+ changeBarHideStatus();
}
}
};
diff --git a/packages/apps/Settings/res/values-zh-rCN/strings.xml b/packages/apps/Settings/res/values-zh-rCN/strings.xml
index df5ef7f..3cdb045 100755
--- a/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -2244,5 +2244,7 @@
<string name="usb_mount_summary"></string>
<string name="usb_format">"格式化 USB 存储设备"</string>
<string name="usb_format_summary">"清除 USB 存储设备中的全部数据,例如音乐和照片"</string>
-
+
+
+ <string name="systembar_hide_title">永久隐藏工具栏</string>
</resources>
diff --git a/packages/apps/Settings/res/values-zh-rHK/strings.xml b/packages/apps/Settings/res/values-zh-rHK/strings.xml
index f862fcc..d2d1990 100644
--- a/packages/apps/Settings/res/values-zh-rHK/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rHK/strings.xml
@@ -2046,4 +2046,7 @@
<string name="user_image_take_photo" msgid="1280274310152803669">"拍照"</string>
<string name="user_image_choose_photo" msgid="7940990613897477057">"從圖片庫選擇相片"</string>
<string name="regulatory_info_text" msgid="5623087902354026557"></string>
+
+
+ <string name="systembar_hide_title">永久隱藏工具列</string>
</resources>
diff --git a/packages/apps/Settings/res/values-zh-rTW/strings.xml b/packages/apps/Settings/res/values-zh-rTW/strings.xml
index cbf0066..7fdc97b 100644
--- a/packages/apps/Settings/res/values-zh-rTW/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rTW/strings.xml
@@ -791,6 +791,7 @@
<string name="system_update_settings_list_item_title" msgid="3342887311059985961">"系統更新"</string>
<string name="system_update_settings_list_item_summary" msgid="3853057315907710747"></string>
<string name="firmware_version" msgid="4801135784886859972">"Android 版本"</string>
+ <string name="fw_version">"韌體版本"</string>
<string name="model_number" msgid="3765737700545384794">"型號"</string>
<string name="fcc_equipment_id" msgid="149114368246356737">"設備 ID"</string>
<string name="baseband_version" msgid="1848990160763524801">"基頻版本"</string>
@@ -2119,4 +2120,5 @@
<string name="enable_wheel_zoom_summary">"通過按下並滾動鼠標滾輪來執行放大或縮小操作"</string>
<string name="prefs_zoom_init_spacing_settings">"設置模擬觸點的初始間距"</string>
<string name="prefs_zoom_step_scale_settings">"設置模擬觸點的移動步長"</string>
+ <string name="systembar_hide_title">永久隱藏工具列</string>
</resources>
diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml
index dc40d05..11027de 100755
--- a/packages/apps/Settings/res/values/strings.xml
+++ b/packages/apps/Settings/res/values/strings.xml
@@ -5112,4 +5112,8 @@
<string name="usb_mount_summary"></string>
<string name="usb_format">Erase USB storage</string>
<string name="usb_format_summary">Erases all data on the USB storage, such as music and photos</string>
+
+
+ <string name="systembar_hide_title">Always hide the status bar</string>
+
</resources>
diff --git a/packages/apps/Settings/res/xml/display_settings.xml b/packages/apps/Settings/res/xml/display_settings.xml
index 577b1a6..e3560b1 100755
--- a/packages/apps/Settings/res/xml/display_settings.xml
+++ b/packages/apps/Settings/res/xml/display_settings.xml
@@ -24,6 +24,9 @@
android:title="@string/brightness"
android:persistent="false"/>
+ <CheckBoxPreference
+ android:key="systembar_hide"
+ android:title="@string/systembar_hide_title"/>
<PreferenceScreen
android:key="wallpaper"
android:title="@string/wallpaper_settings_title"
diff --git a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
index 69eb743..f97f550 100755
--- a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
+++ b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
@@ -40,6 +40,7 @@ import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
+import android.content.Intent;
import com.android.settings.R;
import com.android.internal.view.RotationPolicy;
@@ -56,6 +57,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
/** If there is no setting in the provider, use this. */
private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
+ private static final String KEY_SYSTEMBAR_HIDE = "systembar_hide";
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
private static final String KEY_ACCELEROMETER = "accelerometer";
private static final String KEY_FONT_SIZE = "font_size";
@@ -68,6 +70,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private static final int DLG_GLOBAL_CHANGE_WARNING = 1;
+ private CheckBoxPreference mSystemBarHide;
private CheckBoxPreference mAccelerometer;
private WarnedListPreference mFontSizePref;
private CheckBoxPreference mNotificationPulse;
@@ -122,6 +125,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
addPreferencesFromResource(R.xml.display_settings);
+ mSystemBarHide = (CheckBoxPreference) findPreference(KEY_SYSTEMBAR_HIDE);
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
if (!RotationPolicy.isRotationSupported(getActivity())
@@ -637,6 +641,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
updateAccelerometerRotationCheckbox();
readFontSizePreference(mFontSizePref);
updateScreenSaverSummary();
+ updateSystemBarHideCheckBox();
}
private void updateScreenSaverSummary() {
@@ -651,6 +656,11 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mAccelerometer.setChecked(!RotationPolicy.isRotationLocked(getActivity()));
}
+ private void updateSystemBarHideCheckBox(){
+ boolean hide_systembar = Settings.System.getInt(getContentResolver(),Settings.System.SYSTEMBAR_HIDE,0)==1;
+ mSystemBarHide.setChecked(hide_systembar);
+
+ }
public void writeFontSizePreference(Object objValue) {
try {
@@ -671,6 +681,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
Settings.System.putInt(getContentResolver(), Settings.System.NOTIFICATION_LIGHT_PULSE,
value ? 1 : 0);
return true;
+ }else if(preference == mSystemBarHide)
+ {
+
+ Settings.System.putInt(getContentResolver(), Settings.System.SYSTEMBAR_HIDE,
+ mSystemBarHide.isChecked() ? 1 : 0);
+ Intent i = new Intent("com.tchip.changeBarHideStatus");
+ getActivity().sendBroadcast(i);
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
再补一点自己调查的小知识:
firefly的rk3288android5.1系统里面,发现隐藏了状态栏后,在屏幕的下边缘上划,就会又调出状态栏:
贴上源码:
private void removeBar(boolean needToast){
Log.d("LOUHN_DEBUG","in removeBar");
if (mBarIsAdd){
Log.d(TAG,"remove Bar");
//$_rockchip_$_modify_$_huangjc begin,add show/hide TitleBar interface for statusbar
if(mContext.getResources().getConfiguration().enableMultiWindow()){
try {
mWindowManagerService.changeTitleBar(false);
} catch (RemoteException e) {
Log.w(TAG, "Error changeTitleBar transition: " + e);
}
}
//$_rockchip_$_modify_$_end
if (mNavigationBarView != null){
mWindowManager.removeView(mNavigationBarView);
}
if (!mContext.getResources(). getConfiguration(). enableMultiWindow()&&mStatusBarWindow != null)
mStatusBarWindow.setVisibility(View.GONE);
if(signalCluster_win!=null)
signalCluster_win=null;
if (mNavigationBarView != null)
mNavigationBarView = null;
if(mNotificationLite != null){
mNotificationLite.closeCenter();
}
mBarIsAdd = false; //注意这个变量
if(!isMultiChange)
Toast.makeText(mContext, mContext.getResources(). getString(R. string.hidebar_msg)
, 1000).show();
}
}
在 removeBar()这个方法里面变量mBarIsAdd = false;
上划操作会调用addBarinside()方法,由于mBarIsAdd被设为了false,所以这里就直接执行了addBar的方法,被隐藏的状态栏又出现了如果不想上划出现状态栏,只要把removeBar()方法里面,把mBarIsAdd=false删除就可以了
private void addBarInside(){
Log.d("LOUHN_DEBUG","in addBarInside()");
if (!mBarIsAdd){ //注意这个判断
Log.d(TAG,"add Bar");
Log.d("LOUHN_DEBUG","in addBarInside()222");
try {
boolean showNav = mWindowManagerService.hasNavigationBar();
if (DEBUG) Log.v(TAG, "hasNavigationBar=" + showNav);
if (showNav) {
//haungjc:win bar
if(mContext.getResources().getConfiguration().enableMultiWindow()){
//$_rockchip_$_modify_$_huangjc begin,add show/hide TitleBar interfac for statusbar
try {
mWindowManagerService.changeTitleBar(true);
} catch (RemoteException e) {
Log.w(TAG, "Error changeTitleBar transition: " + e);
}
//$_rockchip_$_modify_$_end
mNavigationBarView =
(NavigationBarView) View.inflate(mContext, R.layout. navigation_bar_win, null);
}else{
mNavigationBarView =
(NavigationBarView) View.inflate(mContext, R.layout.navigation_bar, null);
}
mNavigationBarView.setDisabledFlags(mDisabled);
划后调用addBarInside()方法