Android7.1 设置中添加导航栏显示隐藏功能

 设置中添加导航栏显示隐藏功能

1、显示菜单中有“导航栏”及“自动隐藏导航栏”两个选项,且“导航栏”选项默认勾选,“自动隐藏导航栏"默认开启。
2、上划可划出导航栏

commit 406da4c29e1a26ffc73058ce7b68872879f4cd59
Author: liupingzhang <liupiingzhang@neostra.com>
Date:   Thu Oct 8 15:05:15 2020 +0800

    1824d-jd-w25d: 1.Settings: add navigation bar show & auto hide
    2.frameworks: add navigation bar show & auto hide

diff --git a/device/rockchip/rk3288/system.prop b/device/rockchip/rk3288/system.prop
index d11b0ce..f72af35 100755
--- a/device/rockchip/rk3288/system.prop
+++ b/device/rockchip/rk3288/system.prop
@@ -74,3 +74,9 @@ sys.bluetooth.address=xx:xx:xx:xx:xx:xx
 #sys.neostra_oem_id=N1MXXM00S01T0PXW0E0MXV111XXXXX
 persist.neo.hide.wifiap=true
 persist.neo.allowUsbPermission=true
+#add navigation bar show & auto hide hg@20200929
+persist.neo.statusbar=false
+persist.neo.statusbar2=true
+persist.sys.navbar_enable=1
+persist.sys.navbar_autohide=1
+persist.sys.navbar_show=0
\ No newline at end of file
diff --git a/frameworks/base/packages/SystemUI/res/values/colors.xml b/frameworks/base/packages/SystemUI/res/values/colors.xml
old mode 100644
new mode 100755
index 52565ba..8f78952
--- a/frameworks/base/packages/SystemUI/res/values/colors.xml
+++ b/frameworks/base/packages/SystemUI/res/values/colors.xml
@@ -20,7 +20,8 @@
     <drawable name="notification_number_text_color">#ffffffff</drawable>
     <drawable name="ticker_background_color">#ff1d1d1d</drawable>
     <drawable name="system_bar_background">@color/system_bar_background_opaque</drawable>
-    <color name="system_bar_background_opaque">#ff000000</color>
+    <!-- system_bar_background_opaque default #ff000000, lpz modify to #00000000 for hide&show Navigation-->
+    <color name="system_bar_background_opaque">#00000000</color>
     <color name="system_bar_background_transparent">#00000000</color>
     <color name="notification_panel_solid_background">#ff000000</color>
     <drawable name="status_bar_notification_row_background_color">#ff090909</drawable>
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 92c27f3..f483aa1 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
@@ -199,8 +199,7 @@ import com.android.systemui.statusbar.policy.UserInfoController;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
-import com.android.systemui.statusbar.stack.NotificationStackScrollLayout
-        .OnChildLocationsChangedListener;
+import com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener;
 import com.android.systemui.statusbar.stack.StackStateAnimator;
 import com.android.systemui.volume.VolumeComponent;
 
@@ -238,6 +237,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
     private static final int MSG_CLOSE_PANELS = 1001;
     private static final int MSG_OPEN_SETTINGS_PANEL = 1002;
     private static final int MSG_LAUNCH_TRANSITION_TIMEOUT = 1003;
+    //start add navigation bar show & auto hide by lpz
+    private static final int MSG_HIDE_NAVIGATION_BAR = 1004;
+    private static final int MSG_SHOW_NAVIGATION_BAR = 1005;
+    private static final int MSG_HIDE_NAVIGATION_BAR_DEALY = 1006;
+    //end add navigation bar show & auto hide by lpz
     // 1020-1040 reserved for BaseStatusBar
 
     // Time after we abort the launch transition.
@@ -368,6 +372,13 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
 
     // settings
     private QSPanel mQSPanel;
+    //start add navigation bar show & auto hide by lpz
+    public static final String HIDE_NAVIGATION_BAR = "com.neostra.hideNavigation";
+    public static final String HIDE_NAVIGATION_BAR_DELAY = "com.neostra.hideNavigationDelay";
+    public static final String SHOW_NAVIGATION_BAR = "com.neostra.showNavigation";
+    public static final String HIDE_STATUS_BAR = "com.neostra.hideStatusbar";
+    public static final String SHOW_STATUS_BAR = "com.neostra.showStatusbar";
+    //end add navigation bar show & auto hide by lpz
 
     // top bar
     BaseStatusBarHeader mHeader;
@@ -708,6 +719,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
 
         addNavigationBar();
 
+        // start for boot show navigation bar status by lpz
+        if(SystemProperties.get("persist.sys.navbar_enable").equals("0") || 
+          SystemProperties.get("persist.sys.navbar_autohide").equals("1")){
+            removeNavigationBar();
+        }else{
+            displayNavigationBar();
+        }
+        // end for boot show navigation bar status by lpz
+
         // Lastly, call to the icon policy to install/update all the icons.
         mIconPolicy = new PhoneStatusBarPolicy(mContext, mIconController, mCastController,
                 mHotspotController, mUserInfoController, mBluetoothController,
@@ -1026,6 +1046,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         filter.addAction(Intent.ACTION_SCREEN_ON);
         filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
         context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
+        //start add navigation bar show & auto hide by lpz
+        IntentFilter filterSet=new IntentFilter();
+        filterSet.addAction(HIDE_NAVIGATION_BAR);
+        filterSet.addAction(HIDE_NAVIGATION_BAR_DELAY);
+        filterSet.addAction(SHOW_NAVIGATION_BAR);
+        filterSet.addAction(HIDE_STATUS_BAR);
+        filterSet.addAction(SHOW_STATUS_BAR);
+        context.registerReceiver(mNavigationOrStatusBarReceiver, filterSet);
+        //end add navigation bar show & auto hide by lpz
 
         IntentFilter demoFilter = new IntentFilter();
         if (DEBUG_MEDIA_FAKE_ARTWORK) {
@@ -1375,6 +1404,31 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         }
     };
 
+    //start add navigation bar show & auto hide by lpz
+    private void removeNavigationBar() {
+        if(SystemProperties.get("persist.sys.navbar_enable").equals("0") || 
+          SystemProperties.get("persist.sys.navbar_autohide").equals("1")){
+            if (mNavigationBarView == null){
+                return;
+            }
+            mWindowManager.removeViewImmediate(mNavigationBarView);
+            mNavigationBarView = null;
+            //set_nav_show(false);
+        }
+    }
+	
+    private void displayNavigationBar() {
+        if(SystemProperties.get("persist.sys.navbar_enable").equals("1")){
+            if (mNavigationBarView != null) {
+                return;
+            }
+            createNavigationBarView(mContext);
+            addNavigationBar();
+            //set_nav_show(true);
+        }
+    }
+    //end add navigation bar show & auto hide by lpz
+
     @Override
     protected void toggleSplitScreenMode(int metricsDockAction, int metricsUndockAction) {
         if (mRecents == null) {
@@ -1551,6 +1605,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                     | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                     | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                     | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
+                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
                     | WindowManager.LayoutParams.FLAG_SLIPPERY,
                 PixelFormat.TRANSLUCENT);
         // this will allow the navbar to run in an overlay on devices that support this
@@ -2767,6 +2822,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
     }
 
     public void onScreenTurnedOff() {
+        //start add navigation bar show & auto hide by lpz
+        if (mStatusBarWindow.getVisibility() == View.GONE) {
+            mStatusBarWindow.setVisibility(View.VISIBLE);
+            mStatusBarView.setVisibility(View.VISIBLE);
+        }
+        //end add navigation bar show & auto hide by lpz
         mFalsingManager.onScreenOff();
     }
 
@@ -2795,6 +2856,23 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                 case MSG_LAUNCH_TRANSITION_TIMEOUT:
                     onLaunchTransitionTimeout();
                     break;
+                //start add navigation bar show & auto hide by lpz
+                case MSG_HIDE_NAVIGATION_BAR:
+                    removeNavigationBar();
+                    set_nav_show(false);
+                    break;
+                case MSG_HIDE_NAVIGATION_BAR_DEALY:
+                    removeNavigationBar();
+                    mHandler.removeMessages(MSG_HIDE_NAVIGATION_BAR);
+                    mHandler.sendEmptyMessageDelayed(MSG_HIDE_NAVIGATION_BAR, 500);
+                    break;
+                case MSG_SHOW_NAVIGATION_BAR:
+                    if(!nav_is_show()){
+                        displayNavigationBar();
+                        set_nav_show(true);
+                    }
+                    break;
+                //end add navigation bar show & auto hide by lpz
             }
         }
     }
@@ -3539,6 +3617,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         mRemoteInputController = new RemoteInputController(mStatusBarWindowManager,
                 mHeadsUpManager);
         mStatusBarWindowManager.add(mStatusBarWindow, getStatusBarHeight());
+        //start add navigation bar show & auto hide by lpz
+        String statusString = SystemProperties.get("persist.sys.statusbar","1");
+        if (statusString.equals("1")){
+            mStatusBarWindow.setVisibility(View.VISIBLE);
+            mStatusBarView.setVisibility(View.VISIBLE); 
+        }else if (statusString.equals("0")){
+            mStatusBarView.setVisibility(View.GONE);
+        }
+        //end add navigation bar show & auto hide by lpz
     }
 
     // called by makeStatusbar and also by PhoneStatusBarView
@@ -3649,6 +3736,45 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         }, cancelAction, afterKeyguardGone);
     }
 
+    //start add navigation bar show & auto hide by lpz
+    private BroadcastReceiver mNavigationOrStatusBarReceiver=new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action=intent.getAction();
+            if(action.equals(HIDE_NAVIGATION_BAR)){
+                removeNavigationBar();
+                mHandler.removeMessages(MSG_HIDE_NAVIGATION_BAR);
+                mHandler.sendEmptyMessageDelayed(MSG_HIDE_NAVIGATION_BAR, 500);
+            }else if(action.equals(HIDE_NAVIGATION_BAR_DELAY)){
+                mHandler.removeMessages(MSG_HIDE_NAVIGATION_BAR_DEALY);
+                mHandler.sendEmptyMessageDelayed(MSG_HIDE_NAVIGATION_BAR_DEALY, 5000);
+            }else if(action.equals(SHOW_NAVIGATION_BAR)){
+                if(nav_is_show()){
+                    mHandler.removeMessages(MSG_SHOW_NAVIGATION_BAR);
+                    mHandler.sendEmptyMessageDelayed(MSG_SHOW_NAVIGATION_BAR, 600);
+                }else{
+                    displayNavigationBar();
+                    set_nav_show(true);
+                }
+            }else if(action.equals(HIDE_STATUS_BAR)) {
+                mStatusBarWindow.setVisibility(View.GONE);
+                mStatusBarView.setVisibility(View.GONE);
+            }else if (action.equals(SHOW_STATUS_BAR)){
+                mStatusBarWindow.setVisibility(View.VISIBLE);
+                mStatusBarView.setVisibility(View.VISIBLE);
+            }
+        }
+    };
+
+    private void set_nav_show(boolean show){
+        SystemProperties.set("persist.sys.navbar_show",(show == true)?"1":"0");
+    }
+
+    private boolean nav_is_show(){
+        return SystemProperties.get("persist.sys.navbar_show","1").equals("1");
+    }
+    //end add navigation bar show & auto hide by lpz
+
     private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -4056,6 +4182,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         }
         mContext.unregisterReceiver(mBroadcastReceiver);
         mContext.unregisterReceiver(mDemoReceiver);
+        //start add navigation bar show & auto hide by lpz
+        mContext.unregisterReceiver(mNavigationOrStatusBarReceiver);
+        //end add navigation bar show & auto hide by lpz
         mAssistManager.destroy();
 
         final SignalClusterView signalCluster =
diff --git a/packages/apps/Settings/res/values-zh-rCN/strings.xml b/packages/apps/Settings/res/values-zh-rCN/strings.xml
old mode 100644
new mode 100755
index 4c068f8..2f8f588
--- a/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -3324,4 +3324,10 @@
     <string name="date_mode_set_title">选择日期格式</string>
     <string name="date_mode_set_summary">默认日期格式 </string>
     <!-- end add by yuanantao  -->
+    <!-- start add by xuhuanming  -->
+    <string name="toggle_phone_bar_status">导航栏</string>
+    <string name="toggle_phone_bar_status_summary">开启导航栏</string>
+    <string name="toggle_phone_bar_auto_status">自动隐藏导航栏</string>
+    <string name="toggle_phone_bar_auto_status_summary">自动隐藏导航栏</string>
+    <!-- end add by xuhuanming  -->
 </resources>
diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml
index 4c55f08..e67a366 100755
--- a/packages/apps/Settings/res/values/strings.xml
+++ b/packages/apps/Settings/res/values/strings.xml
@@ -7992,7 +7992,11 @@
      <!-- start add by yuanantao  -->
     <string name="date_mode_set_title">Choose date format </string>
     <string name="date_mode_set_summary">Default date format </string>
-
     <!-- end add by yuanantao  -->
-
+    <!-- start add by xuhuanming  -->
+    <string name="toggle_phone_bar_status">Navigation Bar</string>
+    <string name="toggle_phone_bar_status_summary">Show navigation bar</string>
+    <string name="toggle_phone_bar_auto_status">Auto hide navigation bar</string>
+    <string name="toggle_phone_bar_auto_status_summary">Auto hide navigation bar</string>
+    <!-- end add by xuhuanming  -->
 </resources>
diff --git a/packages/apps/Settings/res/xml/display_settings.xml b/packages/apps/Settings/res/xml/display_settings.xml
index 6f4f95f..f080343 100755
--- a/packages/apps/Settings/res/xml/display_settings.xml
+++ b/packages/apps/Settings/res/xml/display_settings.xml
@@ -65,6 +65,19 @@
                 android:entries="@array/customize_screen_timeout_entries"
                 android:entryValues="@array/customize_screen_timeout_values" />
 
+        <!-- show&hide navigation add by xuxhuangming-->
+        <SwitchPreference
+               android:key="toggle_phone_bar_status"
+               android:summary="@string/toggle_phone_bar_status_summary"
+               android:title="@string/toggle_phone_bar_status"  />
+
+        <!-- auto hide navigation add by xuxhuangming-->
+        <SwitchPreference
+               android:key="toggle_phone_bar_auto_status"
+               android:dependency="toggle_phone_bar_status"
+               android:summary="@string/toggle_phone_bar_auto_status_summary"
+               android:title="@string/toggle_phone_bar_auto_status" />
+
         <SwitchPreference
                 android:key="camera_gesture"
                 android:title="@string/camera_gesture_title"
diff --git a/packages/apps/Settings/src/com/android/settings/DeviceAdminAdd.java b/packages/apps/Settings/src/com/android/settings/DeviceAdminAdd.java
old mode 100644
new mode 100755
index 2f6afd7..bc97d74
--- a/packages/apps/Settings/src/com/android/settings/DeviceAdminAdd.java
+++ b/packages/apps/Settings/src/com/android/settings/DeviceAdminAdd.java
@@ -625,6 +625,13 @@ public class DeviceAdminAdd extends Activity {
 
     private boolean isAdminUninstallable() {
         // System apps can't be uninstalled.
+        //strar for com.jd.mrd.jdsmartdoublescreen cann't Uninstall add by lpz 20200818
+        String packageName = mDeviceAdmin.getActivityInfo().applicationInfo.packageName;
+        Log.e(LOG_TAG, "---lpz---isAdminUninstallable packageName " + packageName);
+        if(packageName.contains("com.jd.mrd.jdsmartdoublescreen")) {
+            return false;
+        }
+        //end for com.jd.mrd.jdsmartdoublescreen cann't Uninstall add by lpz 20200818
         return !mDeviceAdmin.getActivityInfo().applicationInfo.isSystemApp();
     }
-}
+} 
\ No newline at end of file
diff --git a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
index a530b85..9832241 100755
--- a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
+++ b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
@@ -31,6 +31,8 @@ import android.hardware.Sensor;
 import android.hardware.SensorManager;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -88,7 +90,17 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
     private static final String KEY_WALLPAPER = "wallpaper";
     private static final String KEY_VR_DISPLAY_PREF = "vr_display_pref";
     private static final String KEY_HDMI_SETTINGS = "hdmi_settings";
-
+    //start add navigation bar show & auto hide hg@20200929
+    private static final String KEY_PHONE_BAR_STATUS= "toggle_phone_bar_status";
+    private static final String KEY_PHONE_BAR_AUTO_STATUS = "toggle_phone_bar_auto_status";
+    private static final int SHOW_NAV_BAR = 1;
+    private static final int HIDE_NAV_BAR = 2;
+    private static final int HIDE_NAV_BAR_DELAY = 3;
+    private boolean show_nav = true;
+    private boolean auto_hide = true;
+    private SwitchPreference mPhonebarStatusPreference;
+    private SwitchPreference mPhonebarAutoStatusPreference;
+    //end add navigation bar show & auto hide hg@20200929
     private Preference mFontSizePref;
 
     private TimeoutListPreference mScreenTimeoutPreference;
@@ -126,6 +138,14 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
             mHDMIPreference.setSummary(R.string.accessibility_global_gesture_preference_summary_off);
         }
         //getPreferenceScreen().removePreference(mHDMIPreference);//add by luoyalong for 20180305
+        //start add navigation bar show & auto hide hg@20200929
+        mPhonebarStatusPreference = (SwitchPreference) findPreference(KEY_PHONE_BAR_STATUS);
+        mPhonebarStatusPreference.setOnPreferenceChangeListener(this);
+        mPhonebarStatusPreference.setChecked((SystemProperties.get("persist.sys.navbar_enable").equals("1"))?true:false);
+        mPhonebarAutoStatusPreference = (SwitchPreference) findPreference(KEY_PHONE_BAR_AUTO_STATUS);
+        mPhonebarAutoStatusPreference.setOnPreferenceChangeListener(this);      
+        mPhonebarAutoStatusPreference.setChecked((SystemProperties.get("persist.sys.navbar_autohide").equals("1"))?true:false);
+        //end add navigation bar show & auto hide hg@20200929
         getPreferenceScreen().removePreference(findPreference("wifi_display"));
         if(!"tablet".equals(mProduct) || !"true".equals(supportHDMI)){
             //getPreferenceScreen().removePreference(mHDMIPreference);
@@ -369,6 +389,17 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
         super.onPause();
     }
 
+    //start add navigation bar show & auto hide by lpz
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if(mHandler != null){
+            mHandler.removeCallbacksAndMessages(null);
+            mHandler = null;
+        }
+    }
+    //end add navigation bar show & auto hide by lpz
+
     private void updateState() {
         updateFontSizeSummary();
         updateScreenSaverSummary();
@@ -469,8 +500,89 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
                 Log.e(TAG, "could not persist night mode setting", e);
             }
         }
+        //start add navigation bar show & auto hide hg@20200929
+        if (preference == mPhonebarStatusPreference){
+            show_nav = (Boolean) objValue;
+            Log.e("hg", "mPhonebarStatusPreference > show_nav = " + show_nav);
+            if(show_nav){
+                set_nav_enable(true);
+                mPhonebarAutoStatusPreference.setEnabled(true);
+                if(auto_hide){
+                    set_nav_autohide(true);
+                    mHandler.sendEmptyMessage(SHOW_NAV_BAR);
+                    mHandler.removeMessages(HIDE_NAV_BAR_DELAY);
+                    mHandler.sendEmptyMessage(HIDE_NAV_BAR_DELAY);
+                }else{
+                    set_nav_autohide(false);
+                    mHandler.removeCallbacksAndMessages(null);
+                    mHandler.sendEmptyMessage(SHOW_NAV_BAR);
+                }
+            }else{
+                set_nav_enable(false);
+                mPhonebarAutoStatusPreference.setEnabled(false);
+                mHandler.removeCallbacksAndMessages(null);
+                mHandler.sendEmptyMessage(HIDE_NAV_BAR);
+            }
+        }
+
+        if(preference == mPhonebarAutoStatusPreference){
+            auto_hide = (Boolean) objValue;
+            if(auto_hide){
+                set_nav_autohide(true);
+                mHandler.removeMessages(HIDE_NAV_BAR_DELAY);
+                mHandler.sendEmptyMessageDelayed(HIDE_NAV_BAR_DELAY, 0);
+            }else{
+                set_nav_autohide(false);
+                mHandler.removeMessages(HIDE_NAV_BAR_DELAY);
+                mHandler.sendEmptyMessage(SHOW_NAV_BAR);
+            }
+        }
+        //end add navigation bar show & auto hide hg@20200929
         return true;
     }
+    //start add navigation bar show & auto hide hg@20200929
+    private void set_nav_enable(boolean enable){
+        SystemProperties.set("persist.sys.navbar_enable",(enable == true)?"1":"0");
+    }
+    private void set_nav_autohide(boolean autohide){
+        SystemProperties.set("persist.sys.navbar_autohide",(autohide == true)?"1":"0");
+    }
+    /*private void set_nav_show(boolean show){
+        SystemProperties.set("persist.sys.navgationbar_show",(show == true)?"1":"0");
+    }*/   
+    Handler mHandler = new Handler(){
+        public void handleMessage(Message msg) {
+            switch(msg.what){
+            case SHOW_NAV_BAR:
+                show_nav_bar();
+                break;
+            case HIDE_NAV_BAR:
+                hide_nav_bar();
+                break;
+            case HIDE_NAV_BAR_DELAY:
+                hide_nav_bar_delay();
+                break;
+            default:
+                break;
+            }
+        }
+    };
+
+    private void show_nav_bar(){
+        Intent intent = new Intent("com.neostra.showNavigation");
+        getActivity().sendBroadcast(intent);
+    }
+
+    private void hide_nav_bar(){
+        Intent intent = new Intent("com.neostra.hideNavigation");
+        getActivity().sendBroadcast(intent);
+    }
+
+    private void hide_nav_bar_delay(){
+        Intent intent = new Intent("com.neostra.hideNavigationDelay");
+        getActivity().sendBroadcast(intent);
+    }
+    //end add navigation bar show & auto hide hg@20200929
 
     @Override
     public boolean onPreferenceTreeClick(Preference preference) {

 

commit a52c5043a91e15dbae6fd89352b7fd6fd23b156c
Author: liupingzhang <liupingzhang@neostra.com>
Date:   Tue Oct 13 15:10:54 2020 +0800

    1824d-jd-w25d:on Swipe From Bottom, show navigation bar when navigation auto hide

diff --git a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 43c610d..58395b9 100755
--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -234,6 +234,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 
     static final int PENDING_KEY_NULL = -1;
 
+    private static final int AUTO_HIDE_NAV_BAR = 1;// add navigation bar show & auto hide by lpz
+
     // Controls navigation bar opacity depending on which workspace stacks are currently
     // visible.
     // Nav bar is always opaque when either the freeform stack or docked stack is visible.
@@ -1931,6 +1933,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                     }
                     @Override
                     public void onSwipeFromBottom() {
+                        //start add navigation bar show & auto hide by lpz
+                        if(SystemProperties.get("persist.sys.navbar_enable").equals("1")){
+                            Intent showNav = new Intent("com.neostra.showNavigation");
+                            mContext.sendBroadcast(showNav);
+                            handler.removeMessages(AUTO_HIDE_NAV_BAR);
+                            handler.sendEmptyMessageDelayed(AUTO_HIDE_NAV_BAR, 5000);
+                        }
+                        //end add navigation bar show & auto hide by lpz
                         //add by yuanantao 20180707 begin
                         if (mHideStatusBar){
                              return;
@@ -5914,7 +5924,22 @@ public class PhoneWindowManager implements WindowManagerPolicy {
             }
         }
     };
-
+    //start add navigation bar show & auto hide by lpz
+    Handler handler = new Handler(){
+        public void handleMessage(Message msg) {
+            switch(msg.what){
+            case AUTO_HIDE_NAV_BAR:
+            if(SystemProperties.get("persist.sys.navbar_autohide").equals("1")){//hg mark
+                Intent intent = new Intent("com.neostra.hideNavigation");
+                mContext.sendBroadcast(intent);
+            }
+            break;
+            default:
+                break;
+            }
+        }
+    };
+    //end add navigation bar show & auto hide by lpz
     // Assume this is called from the Handler thread.
     private void takeScreenshot(final int screenshotType) {
         synchronized (mScreenshotLock) {