diff options
3 files changed, 27 insertions, 15 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl index dcc14409f046..94b6fd42f701 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl @@ -156,9 +156,11 @@ interface ISystemUiProxy { oneway void animateNavBarLongPress(boolean isTouchDown, boolean shrink, long durationMs) = 54; /** - * Set the override value for home button long press duration in ms and slop multiplier. + * Set the override value for home button long press duration in ms and slop multiplier and + * haptic. */ - oneway void setOverrideHomeButtonLongPress(long duration, float slopMultiplier) = 55; + oneway void setOverrideHomeButtonLongPress(long duration, float slopMultiplier, boolean haptic) + = 55; // Next id = 56 } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 43c73c4e7f35..1a2ae8a68d74 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -243,6 +243,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements private Optional<Long> mHomeButtonLongPressDurationMs; private Optional<Long> mOverrideHomeButtonLongPressDurationMs = Optional.empty(); private Optional<Float> mOverrideHomeButtonLongPressSlopMultiplier = Optional.empty(); + private boolean mHomeButtonLongPressHapticEnabled = true; /** @see android.view.WindowInsetsController#setSystemBarsAppearance(int, int) */ private @Appearance int mAppearance; @@ -410,13 +411,15 @@ public class NavigationBar extends ViewController<NavigationBarView> implements } @Override - public void setOverrideHomeButtonLongPress(long duration, float slopMultiplier) { - Log.d(TAG, "setOverrideHomeButtonLongPress receives: " + duration + "; " - + slopMultiplier); + public void setOverrideHomeButtonLongPress(long duration, float slopMultiplier, + boolean haptic) { + Log.d(TAG, "setOverrideHomeButtonLongPress receives: " + duration + ";" + + slopMultiplier + ";" + haptic); mOverrideHomeButtonLongPressDurationMs = Optional.of(duration) .filter(value -> value > 0); mOverrideHomeButtonLongPressSlopMultiplier = Optional.of(slopMultiplier) .filter(value -> value > 0); + mHomeButtonLongPressHapticEnabled = haptic; mOverrideHomeButtonLongPressDurationMs.ifPresent(aLong -> Log.d(TAG, "Use duration override: " + aLong)); mOverrideHomeButtonLongPressSlopMultiplier.ifPresent(aFloat @@ -463,9 +466,11 @@ public class NavigationBar extends ViewController<NavigationBarView> implements private final Runnable mEnableLayoutTransitions = () -> mView.setLayoutTransitionsEnabled(true); private final Runnable mOnVariableDurationHomeLongClick = () -> { if (onHomeLongClick(mView.getHomeButton().getCurrentView())) { - mView.getHomeButton().getCurrentView().performHapticFeedback( - HapticFeedbackConstants.LONG_PRESS, - HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + if (mHomeButtonLongPressHapticEnabled) { + mView.getHomeButton().getCurrentView().performHapticFeedback( + HapticFeedbackConstants.LONG_PRESS, + HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } } }; @@ -1042,7 +1047,8 @@ public class NavigationBar extends ViewController<NavigationBarView> implements mView.getHomeButton().setOnLongClickListener(null); } else { mView.getHomeButton().getCurrentView().setLongClickable(true); - mView.getHomeButton().getCurrentView().setHapticFeedbackEnabled(true); + mView.getHomeButton().getCurrentView().setHapticFeedbackEnabled( + mHomeButtonLongPressHapticEnabled); mView.getHomeButton().setOnLongClickListener(this::onHomeLongClick); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 1ddc0946905c..520331ae72af 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -264,9 +264,10 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } @Override - public void setOverrideHomeButtonLongPress(long duration, float slopMultiplier) { + public void setOverrideHomeButtonLongPress(long duration, float slopMultiplier, + boolean haptic) { verifyCallerAndClearCallingIdentityPostMain("setOverrideHomeButtonLongPress", - () -> notifySetOverrideHomeButtonLongPress(duration, slopMultiplier)); + () -> notifySetOverrideHomeButtonLongPress(duration, slopMultiplier, haptic)); } @Override @@ -956,9 +957,11 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis } } - private void notifySetOverrideHomeButtonLongPress(long duration, float slopMultiplier) { + private void notifySetOverrideHomeButtonLongPress(long duration, float slopMultiplier, + boolean haptic) { for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) { - mConnectionCallbacks.get(i).setOverrideHomeButtonLongPress(duration, slopMultiplier); + mConnectionCallbacks.get(i) + .setOverrideHomeButtonLongPress(duration, slopMultiplier, haptic); } } @@ -1119,8 +1122,9 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis default void startAssistant(Bundle bundle) {} default void setAssistantOverridesRequested(int[] invocationTypes) {} default void animateNavBarLongPress(boolean isTouchDown, boolean shrink, long durationMs) {} - /** Set override of home button long press duration and touch slop multiplier. */ - default void setOverrideHomeButtonLongPress(long override, float slopMultiplier) {} + /** Set override of home button long press duration, touch slop multiplier, and haptic. */ + default void setOverrideHomeButtonLongPress( + long override, float slopMultiplier, boolean haptic) {} } /** |