Android 12默认手势导航及bug修复

Android 12默认手势导航方法有2种

第1种方法:配置如下ro即可

ro.boot.vendor.overlay.theme=com.android.internal.systemui.navbar.gestural

第2种方法:在SettingsProvider.java中直接调用切换

                if (currentVersion == 191) {
                    final SettingsState secureSettings = getSecureSettingsLocked(userId);
                    int mode = getContext().getResources().getInteger(
                            com.android.internal.R.integer.config_navBarInteractionMode);
                    if (mode == NAV_BAR_MODE_GESTURAL) {
                        switchToDefaultGestureNavBackInset(userId, secureSettings);
                    }
                    // add by songhui for default navbar mode for gestural
                    if (SystemProperties.get("ro.xxx_navbarmode_gestural").equals("1")) {
                        switchToDefaultGestureNavBackInset(userId, secureSettings);
                    }

                    // add by songhui for default navbar mode for gestural
                    migrateBackGestureSensitivity(Secure.BACK_GESTURE_INSET_SCALE_LEFT, userId,
                            secureSettings);
                    migrateBackGestureSensitivity(Secure.BACK_GESTURE_INSET_SCALE_RIGHT, userId,
                            secureSettings);
                    currentVersion = 192;
                }

或许有人会通过配置framework的overlay或者配置gestural rro isStatic="true"标签修改

但是这种方式会有其他bug,比如有些应用会出现导航栏重叠现象,例如微信

会出现的bug

MTK平台Android 12如果切换到手势导航以后,重启手机会出现导航栏高度还是3按键的高度

Android 12默认手势导航及bug修复_第1张图片

这是因为DisplayPolicy起的太早了,没有加载gestural rro apk,5秒以后,overlay才加载,导致mNavBarOpacityMode一直为0,需要后面再刷一下policy

修改方法

frameworks/base/services/java/com/android/server/SystemServer.java

     +   mActivityManagerService.updateSystemUiContext(); 
        if (SystemProperties.getInt("persist.sys.displayinset.top", 0) > 0) {
            // DisplayManager needs the overlay immediately.
     +      // mActivityManagerService.updateSystemUiContext();
            LocalServices.getService(DisplayManagerInternal.class).onOverlayChanged();
        }

你可能感兴趣的:(android,java,导航栏)