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

Commit ab184166 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Additional Assistant gesture tuning" into ub-launcher3-qt-dev

parents 01b8b68d 9bc1431f
Loading
Loading
Loading
Loading
+16 −17
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import android.util.Log;
import android.view.MotionEvent;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.logging.UserEventDispatcher;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.launcher3.R;
import com.android.systemui.shared.system.InputMonitorCompat;
@@ -82,7 +81,6 @@ public class AssistantTouchConsumer implements InputConsumer {
    private final long mTimeThreshold;
    private final int mAngleThreshold;
    private final float mSlop;
    private final MotionPauseDetector mMotionPauseDetector;
    private final ISystemUiProxy mSysUiProxy;
    private final InputConsumer mConsumerDelegate;
    private final Context mContext;
@@ -96,11 +94,10 @@ public class AssistantTouchConsumer implements InputConsumer {
        mContext = context;
        mSysUiProxy = systemUiProxy;
        mConsumerDelegate = delegate;
        mMotionPauseDetector = new MotionPauseDetector(context);
        mDistThreshold = res.getDimension(R.dimen.gestures_assistant_drag_threshold);
        mTimeThreshold = res.getInteger(R.integer.assistant_gesture_min_time_threshold);
        mAngleThreshold = res.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
        mSlop = NavigationBarCompat.getQuickScrubTouchSlopPx();
        mSlop = NavigationBarCompat.getQuickStepDragSlopPx();
        mInputMonitorCompat = inputMonitorCompat;
        mState = STATE_INACTIVE;
    }
@@ -111,8 +108,18 @@ public class AssistantTouchConsumer implements InputConsumer {
    }

    @Override
    public boolean isActive() {
        return mState != STATE_INACTIVE;
    public boolean useSharedSwipeState() {
        if (mConsumerDelegate != null) {
            return mConsumerDelegate.useSharedSwipeState();
        }
        return false;
    }

    @Override
    public void onConsumerAboutToBeSwitched() {
        if (mConsumerDelegate != null) {
            mConsumerDelegate.onConsumerAboutToBeSwitched();
        }
    }

    @Override
@@ -125,14 +132,6 @@ public class AssistantTouchConsumer implements InputConsumer {
                mDownPos.set(ev.getX(), ev.getY());
                mLastPos.set(mDownPos);
                mTimeFraction = 0;

                // Detect when the gesture decelerates to start the assistant
                mMotionPauseDetector.setOnMotionPauseListener(isPaused -> {
                    if (isPaused && mState == STATE_ASSISTANT_ACTIVE) {
                        mTimeFraction = 1;
                        updateAssistantProgress();
                    }
                });
                break;
            }
            case ACTION_POINTER_UP: {
@@ -175,7 +174,7 @@ public class AssistantTouchConsumer implements InputConsumer {
                        mDirection = angle > 90 ? UPLEFT : UPRIGHT;
                        angle = angle > 90 ? 180 - angle : angle;

                        if (angle > mAngleThreshold && angle < 90 - mAngleThreshold) {
                        if (angle > mAngleThreshold && angle < 90) {
                            mState = STATE_ASSISTANT_ACTIVE;

                            if (mConsumerDelegate != null) {
@@ -193,7 +192,6 @@ public class AssistantTouchConsumer implements InputConsumer {
                    // Movement
                    mDistance = (float) Math.hypot(mLastPos.x - mStartDragPos.x,
                            mLastPos.y - mStartDragPos.y);
                    mMotionPauseDetector.addPosition(mDistance, 0, ev.getEventTime());
                    if (mDistance >= 0) {
                        final long diff = SystemClock.uptimeMillis() - mDragTime;
                        mTimeFraction = Math.min(diff * 1f / mTimeThreshold, 1);
@@ -222,8 +220,8 @@ public class AssistantTouchConsumer implements InputConsumer {
                    animator.setInterpolator(Interpolators.DEACCEL_2);
                    animator.start();
                }
                mPassedSlop = false;
                mState = STATE_INACTIVE;
                mMotionPauseDetector.clear();
                break;
        }

@@ -243,6 +241,7 @@ public class AssistantTouchConsumer implements InputConsumer {
                            SWIPE, mDirection, NAVBAR);
                    Bundle args = new Bundle();
                    args.putInt(INVOCATION_TYPE_KEY, INVOCATION_TYPE_GESTURE);

                    mSysUiProxy.startAssistant(args);
                    mLaunchedAssistant = true;
                }
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ public interface InputConsumer {

    int getType();

    default boolean isActive() {
    default boolean useSharedSwipeState() {
        return false;
    }

+1 −1
Original line number Diff line number Diff line
@@ -413,7 +413,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
    }

    @Override
    public boolean isActive() {
    public boolean useSharedSwipeState() {
        return mInteractionHandler != null;
    }
}
+7 −3
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ public class TouchInteractionService extends Service implements
        if (event.getAction() == ACTION_DOWN) {
            if (isInValidSystemUiState()
                    && mSwipeTouchRegion.contains(event.getX(), event.getY())) {
                boolean useSharedState = mConsumer.isActive();
                boolean useSharedState = mConsumer.useSharedSwipeState();
                mConsumer.onConsumerAboutToBeSwitched();
                mConsumer = newConsumer(useSharedState, event);
                TOUCH_INTERACTION_LOG.addLog("setInputConsumer", mConsumer.getType());
@@ -460,8 +460,12 @@ public class TouchInteractionService extends Service implements
        } else if (mAssistantAvailable
                && SysUINavigationMode.INSTANCE.get(this).getMode() == Mode.NO_BUTTON
                && AssistantTouchConsumer.withinTouchRegion(this, event)) {
            return new AssistantTouchConsumer(this, mISystemUiProxy, !activityControl.isResumed()
                            ? createOtherActivityInputConsumer(event, runningTaskInfo) : null, mInputMonitorCompat);

            boolean addDelegate = !activityControl.isResumed();
            return new AssistantTouchConsumer(this, mISystemUiProxy, addDelegate ?
                    createOtherActivityInputConsumer(event, runningTaskInfo) : null,
                    mInputMonitorCompat);

        } else if (mSwipeSharedState.goingToLauncher || activityControl.isResumed()) {
            return OverviewInputConsumer.newInstance(activityControl, false);
        } else if (ENABLE_QUICKSTEP_LIVE_TILE.get() &&
+1 −1
Original line number Diff line number Diff line
@@ -29,5 +29,5 @@

    <!-- Assistant Gesture -->
    <integer name="assistant_gesture_min_time_threshold">200</integer>
    <integer name="assistant_gesture_corner_deg_threshold">10</integer>
    <integer name="assistant_gesture_corner_deg_threshold">20</integer>
</resources>
Loading