增加导航栏控制

------------------------ res/values-zh-rCN/strings.xml ------------------------
index 0e25a9d..21d9868 100644
@@ -1064,4 +1064,6 @@
     <string name="display_settings" msgid="7965901687241669598">"显示"</string>
     <string name="accelerometer_title" msgid="7854608399547349157">"自动旋转屏幕"</string>
+    <string name="control_hide_navigatorbar_title" msgid="9834608399547349257">"导航栏"</string>
+    <string name="hide_navigatorbar_title" msgid="9834608399547349257">"自动隐藏导航栏"</string>
     <string name="color_mode_title" msgid="9186249332902370471">"颜色"</string>
     <string name="color_mode_option_natural" msgid="5013837483986772758">"自然色"</string>

---------------------------- res/values/strings.xml ----------------------------
index 1e6aad4..def3ea6 100644
@@ -2488,4 +2488,6 @@
     <!-- Sound & display settings screen, accelerometer-based rotation check box label -->
     <string name="accelerometer_title">Auto-rotate screen</string>
+    <string name="control_hide_navigatorbar_title">Navigator bar</string>
+    <string name="hide_navigatorbar_title">Auto Hide navigator bar</string>
     <!-- Display settings screen, Color mode settings title [CHAR LIMIT=30] -->
     <string name="color_mode_title">Colors</string>

------------------------- res/xml/display_settings.xml -------------------------
index df3169d..a1e837e 100644
@@ -79,4 +79,12 @@
         settings:keywords="@string/keywords_auto_rotate"
         settings:controller="com.android.settings.display.AutoRotatePreferenceController"/>
+    
+    <SwitchPreference
+        android:key="control_hide_navigatorbar"
+        android:title="@string/control_hide_navigatorbar_title" />   
+        
+    <SwitchPreference
+        android:key="hide_navigatorbar"
+        android:title="@string/hide_navigatorbar_title" />
 
     <Preference

---------------- src/com/android/settings/DisplaySettings.java ----------------
index 42bfc6f..fdfab15 100644
@@ -48,4 +48,7 @@ import java.util.ArrayList;
 import java.util.List;
 
+import com.android.settings.display.HideNavigatorBarPreferenceController;
+import com.android.settings.display.ControlHideNavigatorBarPreferenceController;
+
 public class DisplaySettings extends DashboardFragment {
     private static final String TAG = "DisplaySettings";
@@ -112,4 +115,7 @@ public class DisplaySettings extends DashboardFragment {
         controllers.add(new HdmiPreferenceController(context));
         /// @}
+        //for NavigatorBar 
+        controllers.add(new ControlHideNavigatorBarPreferenceController(context));        
+        controllers.add(new HideNavigatorBarPreferenceController(context));
         return controllers;
     }

src/com/android/settings/display/ControlHideNavigatorBarPreferenceController.java 
new file mode 100755
index 0000000..c759f52
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+package com.android.settings.display;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.events.OnPause;
+import com.android.settingslib.core.lifecycle.events.OnResume;
+import android.view.View;
+import android.view.WindowManagerGlobal;
+import android.view.IWindowManager;
+import android.os.RemoteException;
+import android.view.Window;
+import android.view.WindowManager;
+import android.os.SystemProperties;
+import android.content.Intent;
+import com.mediatek.provider.MtkSettingsExt;
+import android.provider.Settings;
+import java.lang.InterruptedException;
+import android.util.Log;
+
+import static com.mediatek.provider.MtkSettingsExt.Global.CONTROL_NAVIGATIONBAR_HIDE_MODE;
+import static com.mediatek.provider.MtkSettingsExt.Global.NAVIGATIONBAR_HIDE_MODE;
+
+public class ControlHideNavigatorBarPreferenceController extends AbstractPreferenceController implements
+        PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+
+    private static final String KEY_HIDE_NAVIGATOR = "control_hide_navigatorbar";
+    private final MetricsFeatureProvider mMetricsFeatureProvider;
+    private TwoStatePreference mPreference;
+    private View nview;
+    private Context mContext;
+    public static final String TAG = "ControlHideNavigatorBarPreferenceController";
+
+    private final String CONTROL_NAVIGATIONBAR_HIDE_KEY = CONTROL_NAVIGATIONBAR_HIDE_MODE;
+    private final String NAVIGATIONBAR_HIDE_KEY = NAVIGATIONBAR_HIDE_MODE;
+    private final int DEFAULT_VALUE = 0;
+    private final int CONTROL_NAVIGATIONBAR_HIDE_VALUE = 1;
+    public static final String CLOSE_NAVIGATION_BAR= "android.intent.action.CLOSE_NAVIGATION_BAR";
+    public static final String OPEN_NAVIGATION_BAR= "android.intent.action.OPEN_NAVIGATION_BAR";
+
+    IWindowManager mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
+
+    public ControlHideNavigatorBarPreferenceController(Context context) {
+        super(context);
+        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+        mContext = context;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_HIDE_NAVIGATOR;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        int navigationMode = Settings.Secure.getInt(mContext.getContentResolver(),
+                CONTROL_NAVIGATIONBAR_HIDE_KEY, DEFAULT_VALUE);
+        mPreference = (TwoStatePreference) preference;
+        if (mPreference == null) {
+            return;
+        }
+        mPreference.setChecked(navigationMode != DEFAULT_VALUE);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean locked = (boolean) newValue;
+        Log.d(TAG, "onPreferenceChange");
+
+        if (locked) {

+                try {
+                    Thread.sleep(500);
+                } catch (InterruptedException e) {
+                //Log.e(TAG, "interrupted: " + e.toString());
+                }
+                mContext.sendBroadcast(new Intent(OPEN_NAVIGATION_BAR));
+        } else {
+            mContext.sendBroadcast(new Intent(CLOSE_NAVIGATION_BAR));
+        }
+
+
+        Settings.Secure.putInt(mContext.getContentResolver(), CONTROL_NAVIGATIONBAR_HIDE_KEY,
+                locked ? CONTROL_NAVIGATIONBAR_HIDE_VALUE : DEFAULT_VALUE);
+
+        return true;
+    }
+
+}

-- src/com/android/settings/display/HideNavigatorBarPreferenceController.java --
new file mode 100755
index 0000000..37a8edb
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+package com.android.settings.display;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.events.OnPause;
+import com.android.settingslib.core.lifecycle.events.OnResume;
+import android.view.View;
+import android.view.WindowManagerGlobal;
+import android.view.IWindowManager;
+import android.os.RemoteException;
+import android.view.Window;
+import android.view.WindowManager;
+import android.os.SystemProperties;
+import android.content.Intent;
+import com.mediatek.provider.MtkSettingsExt;
+import android.provider.Settings;
+import java.lang.InterruptedException;
+
+import static com.mediatek.provider.MtkSettingsExt.Global.NAVIGATIONBAR_HIDE_MODE;
+import static com.mediatek.provider.MtkSettingsExt.Global.CONTROL_NAVIGATIONBAR_HIDE_MODE;
+
+public class HideNavigatorBarPreferenceController extends AbstractPreferenceController implements
+        PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+
+    private static final String KEY_HIDE_NAVIGATOR = "hide_navigatorbar";
+    private final MetricsFeatureProvider mMetricsFeatureProvider;
+    private TwoStatePreference mPreference;
+    private View nview;
+    private Context mContext;
+    public static final String HIDE_NAVIGATION_BAR= "android.intent.action.HIDE_NAVIGATION_BAR";
+    public static final String SHOW_NAVIGATION_BAR= "android.intent.action.SHOW_NAVIGATION_BAR";
+
+    private final String NAVIGATIONBAR_HIDE_KEY = NAVIGATIONBAR_HIDE_MODE;
+    private final String CONTROL_NAVIGATIONBAR_HIDE_KEY = CONTROL_NAVIGATIONBAR_HIDE_MODE;
+    private final int DEFAULT_VALUE = 1;
+    private final int NAVIGATIONBAR_HIDE_VALUE = 0;
+    private final String AUTO_HIDE_NAV = "immersive.navigation=*";
+    private final String SHOW_NAV = "null";
+
+    IWindowManager mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
+
+    public HideNavigatorBarPreferenceController(Context context) {
+        super(context);
+        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+        mContext = context;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_HIDE_NAVIGATOR;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        int navigationMode = Settings.Secure.getInt(mContext.getContentResolver(),
+                NAVIGATIONBAR_HIDE_KEY, DEFAULT_VALUE);
+        mPreference = (TwoStatePreference) preference;
+        if (mPreference == null) {
+            return;
+        }
+        mPreference.setChecked(navigationMode == DEFAULT_VALUE);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean locked = (boolean) newValue;
+        int controlnavigationMode = Settings.Secure.getInt(mContext.getContentResolver(),
+                CONTROL_NAVIGATIONBAR_HIDE_KEY, 0);
+        if(controlnavigationMode != 1)
+            return false;
+        if(locked){
+            Settings.Global.putString(mContext.getContentResolver(),
+            Settings.Global.POLICY_CONTROL,AUTO_HIDE_NAV);
+        } else {
+            Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.POLICY_CONTROL,SHOW_NAV);
+        }
+
+        Settings.Secure.putInt(mContext.getContentResolver(), NAVIGATIONBAR_HIDE_KEY,
+                locked ? DEFAULT_VALUE : NAVIGATIONBAR_HIDE_VALUE);
+
+        return true;
+    }
+
+}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值