Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5ad8bed authored by Jagrut Desai's avatar Jagrut Desai
Browse files

Decreasing the intensity of haptic feedback for taskbar invocation

Test: Presubmit, Manual
Bug: 308496668
Flag: NONE
Change-Id: Ic8c28b8e84bf9f388a73c518c91840d958287546
parent 89449a30
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING;
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN;
import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
import static com.android.launcher3.util.VibratorWrapper.EFFECT_CLICK;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;

@@ -1150,7 +1149,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
     * Called when we want to unstash taskbar when user performs swipes up gesture.
     */
    public void onSwipeToUnstashTaskbar() {
        VibratorWrapper.INSTANCE.get(this).vibrate(EFFECT_CLICK);
        VibratorWrapper.INSTANCE.get(this).vibrateForTaskbarUnstash();
        mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(/* stash= */ false);
        mControllers.taskbarEduTooltipController.hide();
    }
+21 −8
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.launcher3.util;

import static android.os.VibrationEffect.Composition.PRIMITIVE_LOW_TICK;
import static android.os.VibrationEffect.createPredefined;
import static android.provider.Settings.System.HAPTIC_FEEDBACK_ENABLED;

@@ -61,6 +62,7 @@ public class VibratorWrapper {
    public static final VibrationEffect EFFECT_CLICK =
            createPredefined(VibrationEffect.EFFECT_CLICK);

    private static final float LOW_TICK_SCALE = 0.7f;
    private static final float DRAG_TEXTURE_SCALE = 0.03f;
    private static final float DRAG_COMMIT_SCALE = 0.5f;
    private static final float DRAG_BUMP_SCALE = 0.4f;
@@ -110,22 +112,22 @@ public class VibratorWrapper {
        }

        if (Utilities.ATLEAST_S && mVibrator.areAllPrimitivesSupported(
                VibrationEffect.Composition.PRIMITIVE_LOW_TICK)) {
                PRIMITIVE_LOW_TICK)) {

            // Drag texture, Commit, and Bump should only be used for premium phones.
            // Before using these haptics make sure check if the device can use it
            VibrationEffect.Composition dragEffect = VibrationEffect.startComposition();
            for (int i = 0; i < DRAG_TEXTURE_EFFECT_SIZE; i++) {
                dragEffect.addPrimitive(
                        VibrationEffect.Composition.PRIMITIVE_LOW_TICK, DRAG_TEXTURE_SCALE);
                        PRIMITIVE_LOW_TICK, DRAG_TEXTURE_SCALE);
            }
            mDragEffect = dragEffect.compose();
            mCommitEffect = VibrationEffect.startComposition().addPrimitive(
                    VibrationEffect.Composition.PRIMITIVE_TICK, DRAG_COMMIT_SCALE).compose();
            mBumpEffect = VibrationEffect.startComposition().addPrimitive(
                    VibrationEffect.Composition.PRIMITIVE_LOW_TICK, DRAG_BUMP_SCALE).compose();
                    PRIMITIVE_LOW_TICK, DRAG_BUMP_SCALE).compose();
            int primitiveDuration = mVibrator.getPrimitiveDurations(
                    VibrationEffect.Composition.PRIMITIVE_LOW_TICK)[0];
                    PRIMITIVE_LOW_TICK)[0];

            mThresholdUntilNextDragCallMillis =
                    DRAG_TEXTURE_EFFECT_SIZE * primitiveDuration + 100;
@@ -243,11 +245,22 @@ public class VibratorWrapper {
        }
    }

    /** Indicates that Taskbar has been invoked. */
    public void vibrateForTaskbarUnstash() {
        if (Utilities.ATLEAST_S && mVibrator.areAllPrimitivesSupported(PRIMITIVE_LOW_TICK)) {
            VibrationEffect primitiveLowTickEffect = VibrationEffect
                    .startComposition()
                    .addPrimitive(PRIMITIVE_LOW_TICK, LOW_TICK_SCALE)
                    .compose();

            vibrate(primitiveLowTickEffect);
        }
    }

    /** Indicates that search will be invoked if the current gesture is maintained. */
    public void vibrateForSearchHint() {
        if (FeatureFlags.ENABLE_SEARCH_HAPTIC_HINT.get() && Utilities.ATLEAST_S
                && mVibrator.areAllPrimitivesSupported(
                VibrationEffect.Composition.PRIMITIVE_LOW_TICK)) {
                && mVibrator.areAllPrimitivesSupported(PRIMITIVE_LOW_TICK)) {
            LauncherPrefs launcherPrefs = LauncherPrefs.get(mContext);
            float startScale = launcherPrefs.get(
                    LONG_PRESS_NAV_HANDLE_HAPTIC_HINT_START_SCALE_PERCENT) / 100f;
@@ -267,10 +280,10 @@ public class VibratorWrapper {
                        scaleExponent);
                if (i == 0) {
                    // Adds a delay before the ramp starts
                    composition.addPrimitive(VibrationEffect.Composition.PRIMITIVE_LOW_TICK, scale,
                    composition.addPrimitive(PRIMITIVE_LOW_TICK, scale,
                            delayMs);
                } else {
                    composition.addPrimitive(VibrationEffect.Composition.PRIMITIVE_LOW_TICK, scale);
                    composition.addPrimitive(PRIMITIVE_LOW_TICK, scale);
                }
            }