[九鼎RK3399Pro] Android 8.1定制系统导航栏和状态栏显示和隐藏可控制

本文介绍如何在Android设备上自定义状态栏和导航栏功能,包括添加关机、屏幕旋转和动态隐藏显示导航栏等操作。通过修改源码实现特定需求,适用于公共场合使用的应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的app跑在RK3399Pro上面,是放在一个公共场合使用,所以把底部的 返回,HOME,MENU键都隐藏掉,并且上部导航栏下拉功能也要取消。

代码我是参考Firefly的代码写的。

实现了一下功能

frameworks层添加三个功能
1.导航栏添加关机功能.
2.导航栏支持屏幕横竖屏切换功能.
3.导航栏支持动态隐藏和显示导航栏,永久关闭导航栏在framework层提供借口供外部使用

不多说,直接上代码

frameworks/base/core/java/android/content/Intent.java
diff --git a/frameworks/base/core/java/android/content/Intent.java b/frameworks/base/core/java/android/content/Intent.java
index 6fd333a0c9..1dc8da6746 100755
--- a/frameworks/base/core/java/android/content/Intent.java
+++ b/frameworks/base/core/java/android/content/Intent.java
@@ -2079,6 +2079,31 @@ public class Intent implements Parcelable, Cloneable {
   
   
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
+
+     /****/
+     /**firefly_modify_songjf Broadcast Action:Status bar  hidden
+     * @hide
+     */
+    public static final String ACTION_HIDE_BAR = "action.HIDE_STATUSBAR";
+    /****/
+     /**firefly_modify_songjf Broadcast Action:Status bar  show
+     * @hide
+     */
+    public static final String ACTION_SHOW_BAR = "action.SHOW_STATUSBAR";
+
+    /****/
+     /**firefly_modify_songjf Broadcast Action:Status bar  show
+     * @hide
+     */
+    public static final String ACTION_ALWAYS_HIDE_BAR_CHANGE = "action.ALWAYS_HIDE_STATUSBAR_CHENAGE";
+
+
+    /****/ 
+     /**firefly_modify_songjf Broadcast Action:poweroff
+     * @hide
+     */
+    public static final String ACTION_SYSTEMUI_FIREFLY_POWEROFF = "action.SYSTEMUI_FIREFLY_POWEROFF";
+
     /**
      * Broadcast Action: Trigger the download and eventual installation
      * of a package.

frameworks/base/core/java/android/provider/Settings.java
diff --git a/frameworks/base/core/java/android/provider/Settings.java b/frameworks/base/core/java/android/provider/Settings.java
index d5a9d09ce4..a4fbd2064f 100755
--- a/frameworks/base/core/java/android/provider/Settings.java
+++ b/frameworks/base/core/java/android/provider/Settings.java
@@ -3627,6 +3627,23 @@ public final class Settings {
   
   
          */
         public static final String SCREENSHOT_BUTTON_SHOW = "screenshot_button_show";
 
+       /**
+         *hidebar button wether display
+         * @hide
+         */
+        public static final String HIDEBAR_BUTTON_SHOW = "hidebar_button_show";
+
+       /**
+         *hide status bar
+         * @hide
+         */
+        public static final String ALWAYS_HIDE_BAR="always_hide_bar";
+
+        /**
+         * if enabled while show rotation in SystenUI and Settings-DisplaySettings
+         * @hide
+         */
+        public static final String ENABLE_ROTATION_BY_USER = "enable_rotation_by_user";
         /**
          * Whether the phone vibrates when it is ringing due to an incoming call. This will
          * be used by Phone and Setting apps; it shouldn't affect other apps.

frameworks/base/core/java/com/android/internal/statusbar/IStatusBar.aidl
diff --git a/frameworks/base/core/java/com/android/internal/statusbar/IStatusBar.aidl b/frameworks/base/core/java/com/android/internal/statusbar/IStatusBar.aidl
index bab0306aaf..8da31c5df1 100644
--- a/frameworks/base/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/frameworks/base/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -55,6 +55,10 @@ oneway interface IStatusBar
             boolean showImeSwitcher);
     void setWindowState(int window, int state);
 
+
+    //firefly_modify_songjf, add bar interface 
+    void addBar();
+
     void showRecentApps(boolean triggeredFromAltTab, boolean fromHome);
     void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
     void toggleRecentApps();

frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl
diff --git a/frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 82eb1abcba..4f59192186 100644
--- a/frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/frameworks/base/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -73,6 +73,9 @@ interface IStatusBarService
     void shutdown();
     void reboot(boolean safeMode);
 
+    //firefly_modify_songjf, add bar interface 
+    void addBar();
+
     void addTile(in ComponentName tile);
     void remTile(in ComponentName tile);
     void clickTile(in ComponentName tile);

frameworks/base/packages/SettingsProvider/res/values/custom_defaults.xml
diff --git a/frameworks/base/packages/SettingsProvider/res/values/custom_defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/custom_defaults.xml
new file mode 100644
index 0000000000..53da8c515b
--- /dev/null
+++ b/fra
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值