直接上代码了。就是增加home,back,recent控制接口。参考某个大佬的修改,自己增加到android 11.0上面去了
做法就是 隐藏具体的按钮,来实现控制。
diff --git a/device/qcom/qssi/system.prop b/device/qcom/qssi/system.prop
index 75b4fcdbd0..ba732ed1eb 100755
--- a/device/qcom/qssi/system.prop
+++ b/device/qcom/qssi/system.prop
@@ -84,6 +84,7 @@ persist.debug.wfd.enable=1
##property to choose between virtual/external wfd display
persist.sys.wfd.virtual=0
+persist.sys.nvbshow=0
#property to enable HWC for VDS
debug.sf.enable_hwc_vds=1
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
old mode 100644
new mode 100755
index 1eab427b41..16b513c21e
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -86,6 +86,8 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.function.Consumer;
+import android.provider.Settings;//oudelin add
+
public class NavigationBarView extends FrameLayout implements
NavigationModeController.ModeChangedListener {
final static boolean DEBUG = false;
@@ -709,8 +711,29 @@ public class NavigationBarView extends FrameLayout implements
getHomeButton().setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
getHomeHandle().setVisibility(disableHomeHandle ? View.INVISIBLE : View.VISIBLE);
+
+ invalidButtonVisibility();
+
}
+ public void invalidButtonVisibility(){//oudelin add
+ //20191211 add recent KeyButton visibility invisible
+ int home_status = Settings.System.getInt(mContext.getContentResolver(), "pwm_home", 1);
+ int back_status = Settings.System.getInt(mContext.getContentResolver(), "NV_BACK", 1);
+ int recent_status = Settings.System.getInt(mContext.getContentResolver(), "NV_RECENT", 1);
+ //Log.d(TAG, "invalidButtonVisibility(): home_status=" + home_status + " back_status="+back_status +" recent_status = " +recent_status);
+
+ boolean ishome = (home_status ==1);
+ boolean isback = (back_status ==1);
+ boolean isrecent = (recent_status ==1);
+
+ getBackButton().setVisibility( isback ? View.VISIBLE : View.INVISIBLE );
+ getHomeButton().setVisibility( ishome ? View.VISIBLE : View.INVISIBLE );
+ getRecentsButton().setVisibility(isrecent ? View.VISIBLE : View.INVISIBLE );
+ //20191211 add recent KeyButton visibility invisible
+ }
+
+
@VisibleForTesting
boolean isRecentsButtonDisabled() {
return mUseCarModeUi || !isOverviewEnabled()
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 8b08cb732e..d7d4ecbd90 100755
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -265,7 +265,7 @@ public class StatusBar extends SystemUI implements DemoMode,
public static final boolean DEBUG_WINDOW_STATE = false;
- private static final String OP_BUTTON = "cc.intent.systemui.SHOW_NAVIGATION_BUTTON";//oudelin add status bar
+ private static final String SHOW_NV_BUTTON = "com.chengwei.SHOW_NAVIGATION_BUTTON";//oudelin add status bar
private static final String SHOW_NAVIGATION = "com.chengwei.NavBar_ENABLE";
private static final String HIDE_NAVIGATION = "com.chengwei.NavBar_DISABLED";
// additional instrumentation for testing purposes; intended to be left on during development
@@ -1287,6 +1287,7 @@ public class StatusBar extends SystemUI implements DemoMode,
filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
filter.addAction(SHOW_NAVIGATION);//oudelin add status bar
filter.addAction(HIDE_NAVIGATION);//oudelin add status bar
+ filter.addAction(SHOW_NV_BUTTON );//oudelin add status bar
mBroadcastDispatcher.registerReceiver(mBroadcastReceiver, filter, null, UserHandle.ALL);
}
@@ -2796,6 +2797,11 @@ public class StatusBar extends SystemUI implements DemoMode,
if (mNavigationBarView != null) return;
createNavigationBar(result);
}
+ else if (SHOW_NV_BUTTON.equals(action)) {
+ Log.e("StatusBar", "SHOW_NV_BUTTON : " + action);
+ NavigationBarFragment mNavigationBar = mNavigationBarController.getDefaultNavigationBarFragment();
+ if (mNavigationBar != null) mNavigationBar.notifyNavigationBarScreenOn();
+ }
}
};