Loading packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +24 −0 Original line number Original line Diff line number Diff line Loading @@ -19,15 +19,21 @@ package com.android.systemui.shared.recents.utilities; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Color; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService; import android.os.Handler; import android.os.Handler; import android.os.Message; import android.os.Message; import android.util.DisplayMetrics; import android.view.Surface; import android.view.Surface; /* Common code */ /* Common code */ public class Utilities { public class Utilities { private static final float TABLET_MIN_DPS = 600; /** /** * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. */ */ Loading Loading @@ -110,4 +116,22 @@ public class Utilities { return hints; return hints; } } /** See {@link #isTablet(Configuration, Context)} */ public static boolean isTablet(Context context) { Configuration newConfig = context.getResources().getConfiguration(); return isTablet(newConfig, context); } /** * @return whether or not {@param newConfig} represents that of a large screen device or not */ public static boolean isTablet(Configuration newConfig, Context context) { float density = Resources.getSystem().getDisplayMetrics().density; int size = Math.min((int) (density * newConfig.screenWidthDp), (int) (density* newConfig.screenHeightDp)); DisplayMetrics metrics = context.getResources().getDisplayMetrics(); float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT; return (size / densityRatio) >= TABLET_MIN_DPS; } } } packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +5 −1 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSE import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE; import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY; Loading Loading @@ -878,7 +879,10 @@ public class NavigationBar implements View.OnAttachStateChangeListener, if (hints == mNavigationIconHints) return; if (hints == mNavigationIconHints) return; mNavigationIconHints = hints; mNavigationIconHints = hints; if (!isTablet(mContext)) { // All IME functions handled by launcher via Sysui flags for large screen mNavigationBarView.setNavigationIconHints(hints); mNavigationBarView.setNavigationIconHints(hints); } checkBarModes(); checkBarModes(); updateSystemUiStateFlags(-1); updateSystemUiStateFlags(-1); } } Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +5 −16 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,15 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import android.content.Context; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.RemoteException; import android.os.RemoteException; import android.util.DisplayMetrics; import android.util.Log; import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.view.Display; import android.view.Display; Loading Loading @@ -86,8 +86,6 @@ public class NavigationBarController implements Callbacks, ConfigurationController.ConfigurationListener, ConfigurationController.ConfigurationListener, NavigationModeController.ModeChangedListener, Dumpable { NavigationModeController.ModeChangedListener, Dumpable { private static final float TABLET_MIN_DPS = 600; private static final String TAG = NavigationBarController.class.getSimpleName(); private static final String TAG = NavigationBarController.class.getSimpleName(); private final Context mContext; private final Context mContext; Loading Loading @@ -196,14 +194,14 @@ public class NavigationBarController implements Callbacks, mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate.setOverviewProxyService(overviewProxyService, mTaskbarDelegate.setOverviewProxyService(overviewProxyService, navigationBarA11yHelper, mSysUiFlagsContainer); navigationBarA11yHelper, mSysUiFlagsContainer); mIsTablet = isTablet(mContext.getResources().getConfiguration()); mIsTablet = isTablet(mContext); mUserTracker = userTracker; mUserTracker = userTracker; } } @Override @Override public void onConfigChanged(Configuration newConfig) { public void onConfigChanged(Configuration newConfig) { boolean isOldConfigTablet = mIsTablet; boolean isOldConfigTablet = mIsTablet; mIsTablet = isTablet(newConfig); mIsTablet = isTablet(newConfig, mContext); boolean largeScreenChanged = mIsTablet != isOldConfigTablet; boolean largeScreenChanged = mIsTablet != isOldConfigTablet; // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded if (largeScreenChanged && updateNavbarForTaskbar()) { if (largeScreenChanged && updateNavbarForTaskbar()) { Loading Loading @@ -275,7 +273,7 @@ public class NavigationBarController implements Callbacks, @Override @Override public void onDisplayReady(int displayId) { public void onDisplayReady(int displayId) { Display display = mDisplayManager.getDisplay(displayId); Display display = mDisplayManager.getDisplay(displayId); mIsTablet = isTablet(mContext.getResources().getConfiguration()); mIsTablet = isTablet(mContext); createNavigationBar(display, null /* savedState */, null /* result */); createNavigationBar(display, null /* savedState */, null /* result */); } } Loading Loading @@ -470,15 +468,6 @@ public class NavigationBarController implements Callbacks, return mNavigationBars.get(DEFAULT_DISPLAY); return mNavigationBars.get(DEFAULT_DISPLAY); } } private boolean isTablet(Configuration newConfig) { float density = Resources.getSystem().getDisplayMetrics().density; int size = Math.min((int) (density * newConfig.screenWidthDp), (int) (density* newConfig.screenHeightDp)); DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT; return (size / densityRatio) >= TABLET_MIN_DPS; } @Override @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { for (int i = 0; i < mNavigationBars.size(); i++) { for (int i = 0; i < mNavigationBars.size(); i++) { Loading Loading
packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +24 −0 Original line number Original line Diff line number Diff line Loading @@ -19,15 +19,21 @@ package com.android.systemui.shared.recents.utilities; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Color; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService; import android.os.Handler; import android.os.Handler; import android.os.Message; import android.os.Message; import android.util.DisplayMetrics; import android.view.Surface; import android.view.Surface; /* Common code */ /* Common code */ public class Utilities { public class Utilities { private static final float TABLET_MIN_DPS = 600; /** /** * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. */ */ Loading Loading @@ -110,4 +116,22 @@ public class Utilities { return hints; return hints; } } /** See {@link #isTablet(Configuration, Context)} */ public static boolean isTablet(Context context) { Configuration newConfig = context.getResources().getConfiguration(); return isTablet(newConfig, context); } /** * @return whether or not {@param newConfig} represents that of a large screen device or not */ public static boolean isTablet(Configuration newConfig, Context context) { float density = Resources.getSystem().getDisplayMetrics().density; int size = Math.min((int) (density * newConfig.screenWidthDp), (int) (density* newConfig.screenHeightDp)); DisplayMetrics metrics = context.getResources().getDisplayMetrics(); float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT; return (size / densityRatio) >= TABLET_MIN_DPS; } } }
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +5 −1 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSE import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE; import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY; Loading Loading @@ -878,7 +879,10 @@ public class NavigationBar implements View.OnAttachStateChangeListener, if (hints == mNavigationIconHints) return; if (hints == mNavigationIconHints) return; mNavigationIconHints = hints; mNavigationIconHints = hints; if (!isTablet(mContext)) { // All IME functions handled by launcher via Sysui flags for large screen mNavigationBarView.setNavigationIconHints(hints); mNavigationBarView.setNavigationIconHints(hints); } checkBarModes(); checkBarModes(); updateSystemUiStateFlags(-1); updateSystemUiStateFlags(-1); } } Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +5 −16 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,15 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static com.android.systemui.shared.recents.utilities.Utilities.isTablet; import android.content.Context; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Bundle; import android.os.Handler; import android.os.Handler; import android.os.RemoteException; import android.os.RemoteException; import android.util.DisplayMetrics; import android.util.Log; import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.view.Display; import android.view.Display; Loading Loading @@ -86,8 +86,6 @@ public class NavigationBarController implements Callbacks, ConfigurationController.ConfigurationListener, ConfigurationController.ConfigurationListener, NavigationModeController.ModeChangedListener, Dumpable { NavigationModeController.ModeChangedListener, Dumpable { private static final float TABLET_MIN_DPS = 600; private static final String TAG = NavigationBarController.class.getSimpleName(); private static final String TAG = NavigationBarController.class.getSimpleName(); private final Context mContext; private final Context mContext; Loading Loading @@ -196,14 +194,14 @@ public class NavigationBarController implements Callbacks, mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate = taskbarDelegate; mTaskbarDelegate.setOverviewProxyService(overviewProxyService, mTaskbarDelegate.setOverviewProxyService(overviewProxyService, navigationBarA11yHelper, mSysUiFlagsContainer); navigationBarA11yHelper, mSysUiFlagsContainer); mIsTablet = isTablet(mContext.getResources().getConfiguration()); mIsTablet = isTablet(mContext); mUserTracker = userTracker; mUserTracker = userTracker; } } @Override @Override public void onConfigChanged(Configuration newConfig) { public void onConfigChanged(Configuration newConfig) { boolean isOldConfigTablet = mIsTablet; boolean isOldConfigTablet = mIsTablet; mIsTablet = isTablet(newConfig); mIsTablet = isTablet(newConfig, mContext); boolean largeScreenChanged = mIsTablet != isOldConfigTablet; boolean largeScreenChanged = mIsTablet != isOldConfigTablet; // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded if (largeScreenChanged && updateNavbarForTaskbar()) { if (largeScreenChanged && updateNavbarForTaskbar()) { Loading Loading @@ -275,7 +273,7 @@ public class NavigationBarController implements Callbacks, @Override @Override public void onDisplayReady(int displayId) { public void onDisplayReady(int displayId) { Display display = mDisplayManager.getDisplay(displayId); Display display = mDisplayManager.getDisplay(displayId); mIsTablet = isTablet(mContext.getResources().getConfiguration()); mIsTablet = isTablet(mContext); createNavigationBar(display, null /* savedState */, null /* result */); createNavigationBar(display, null /* savedState */, null /* result */); } } Loading Loading @@ -470,15 +468,6 @@ public class NavigationBarController implements Callbacks, return mNavigationBars.get(DEFAULT_DISPLAY); return mNavigationBars.get(DEFAULT_DISPLAY); } } private boolean isTablet(Configuration newConfig) { float density = Resources.getSystem().getDisplayMetrics().density; int size = Math.min((int) (density * newConfig.screenWidthDp), (int) (density* newConfig.screenHeightDp)); DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT; return (size / densityRatio) >= TABLET_MIN_DPS; } @Override @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { for (int i = 0; i < mNavigationBars.size(); i++) { for (int i = 0; i < mNavigationBars.size(); i++) { Loading