RK3568-Android13定制状态栏导航栏

一、状态栏的隐藏与显示
SystemUI模块修改文件如下:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java

在这里插入图片描述
二、导航栏的隐藏与显示

packages/apps/Launcher3/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
packages/apps/Launcher3/quickstep/src/com/android/quickstep/TouchInteractionService.java
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、Settings模块修改添加开关:
packages/apps/Settings/res/xml/display_settings.xml
在这里插入图片描述
packages/apps/Settings/src/com/android/settings/display/status_navi_bar/NaviBarPreferenceController.java

package com.android.settings.display.status_navi_bar;

import android.content.Context;
import android.content.Intent;
import android.os.SystemProperties;
import android.preference.Preference;
import android.util.Log;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;

public class NaviBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {

    private static final String TAG = "NaviBarPreferenceController";

    private static final String SYS_PROPERTY_NAVIGATION_BAR = "persist.sys.navigationbar.enable";
    private static final String ACTION_HIDE_NAVIGATION_BAR = "com.systemui.navigationbar.hide";
    private static final String ACTION_SHOW_NAVIGATION_BAR = "com.systemui.navigationbar.show";
    private Context mContext;
    public NaviBarPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mContext = context;
    }

    @Override
    public int getAvailabilityStatus() {
        return BasePreferenceController.AVAILABLE;
    }

    @Override
    public boolean isChecked() {
        return !SystemProperties.getBoolean(SYS_PROPERTY_NAVIGATION_BAR, false);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        Log.d(TAG, "setChecked: " + isChecked);
        Intent intent = isChecked ? new Intent(ACTION_HIDE_NAVIGATION_BAR) : new Intent(ACTION_SHOW_NAVIGATION_BAR);
        mContext.sendBroadcast(intent);
        return true;
    }

    @Override
    public int getSliceHighlightMenuRes() {
        return NO_RES;
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        Log.d(TAG, "onPreferenceChange: "+newValue);
        return true;
    }

    @Override
    public void onPause() {
        Log.d(TAG, "onPause: ");
    }

    @Override
    public void onResume() {
        Log.d(TAG, "onResume: ");
    }
}

packages/apps/Settings/src/com/android/settings/display/status_navi_bar/StatusBarPreferenceController.java

package com.android.settings.display.status_navi_bar;

import android.content.Context;
import android.content.Intent;
import android.os.SystemProperties;
import android.preference.Preference;
import android.util.Log;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;

public class StatusBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {

    private static final String TAG = "StatusBarPreferenceController";

    private static final String SYS_PROPERTY_STATUS_BAR = "persist.sys.statusbar.enable";
    private static final String ACTION_HIDE_STATUS_BAR = "com.systemui.statusbar.hide";
    private static final String ACTION_SHOW_STATUS_BAR = "com.systemui.statusbar.show";
    private Context mContext;

    public StatusBarPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mContext = context;
    }

    @Override
    public int getAvailabilityStatus() {
        return BasePreferenceController.AVAILABLE;
    }

    @Override
    public boolean isChecked() {
        return !SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, false);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        Log.d(TAG, "setChecked: " + isChecked);
        Intent intent = isChecked ? new Intent(ACTION_HIDE_STATUS_BAR) : new Intent(ACTION_SHOW_STATUS_BAR);
        mContext.sendBroadcast(intent);
        return true;
    }

    @Override
    public int getSliceHighlightMenuRes() {
        return NO_RES;
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        Log.d(TAG, "onPreferenceChange: "+newValue);
        return true;
    }

    @Override
    public void onPause() {
        Log.d(TAG, "onPause: ");
    }

    @Override
    public void onResume() {
        Log.d(TAG, "onResume: ");
    }
}

至此,完成了状态栏和导航栏的隐藏与显示

posted @ 2026-06-05 14:21  yazhou_android  阅读(11)  评论(0)    收藏  举报