diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java index be87a962fa..86f0fcaeb2 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/AssistantTouchConsumer.java @@ -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; } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java index ad9fe78f85..e3f9e02a02 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/InputConsumer.java @@ -34,7 +34,7 @@ public interface InputConsumer { int getType(); - default boolean isActive() { + default boolean useSharedSwipeState() { return false; } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java index 9c8e80e5c3..03af92dc38 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/OtherActivityInputConsumer.java @@ -413,7 +413,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } @Override - public boolean isActive() { + public boolean useSharedSwipeState() { return mInteractionHandler != null; } } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java index 95dea5044f..ff5232332a 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java @@ -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() && diff --git a/quickstep/res/values/config.xml b/quickstep/res/values/config.xml index e29d3df273..95aea43aec 100644 --- a/quickstep/res/values/config.xml +++ b/quickstep/res/values/config.xml @@ -29,5 +29,5 @@ 200 - 10 + 20 diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index 75959d1060..13a0435c16 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -66,7 +66,7 @@ 48dp - 70dp + 55dp 28dp