Use movement on the trackpad instead of on screen for trackpad gestures used for gesture nav
Bug: 254783214
Test: https://recall.googleplex.com/projects/3388b17c-d22f-46f8-b140-a102690377b4/sessions/f3311fbc-d8cf-4f19-b83c-8626aa285452
Change-Id: Iad2da5831af85dd3647e1e31b42fea0a6302b49c
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index c11de7f..3c05fe6 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -71,6 +71,7 @@
import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
+import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.animation.Interpolator;
@@ -181,6 +182,8 @@
public static boolean IS_RUNNING_IN_TEST_HARNESS =
ActivityManager.isRunningInTestHarness();
+ private static final int TRACKPAD_GESTURE_SCALE = 60;
+
public static void enableRunningInTestHarnessForTests() {
IS_RUNNING_IN_TEST_HARNESS = true;
}
@@ -927,6 +930,38 @@
&& (event.getSource() & SOURCE_TOUCHSCREEN) != SOURCE_TOUCHSCREEN;
}
+ public static int getTrackpadMotionEventScale(Context context) {
+ return ViewConfiguration.get(context).getScaledTouchSlop() * TRACKPAD_GESTURE_SCALE;
+ }
+
+ public static float getXVelocity(VelocityTracker velocityTracker, MotionEvent event,
+ int pointerId) {
+ // Will be enabled after ag/20353570 is submitted
+// if (isTrackpadMotionEvent(event)) {
+// return velocityTracker.getAxisVelocity(AXIS_GESTURE_X_OFFSET, pointerId);
+// } else {
+ return velocityTracker.getXVelocity(pointerId);
+// }
+ }
+
+ public static float getXVelocity(VelocityTracker velocityTracker, MotionEvent event) {
+ return getXVelocity(velocityTracker, event, -1 /* ACTIVE_POINTER_ID */);
+ }
+
+ public static float getYVelocity(VelocityTracker velocityTracker, MotionEvent event,
+ int pointerId) {
+ // Will be enabled after ag/20353570 is submitted
+// if (isTrackpadMotionEvent(event)) {
+// return velocityTracker.getAxisVelocity(AXIS_GESTURE_Y_OFFSET, pointerId);
+// } else {
+ return velocityTracker.getYVelocity(pointerId);
+// }
+ }
+
+ public static float getYVelocity(VelocityTracker velocityTracker, MotionEvent event) {
+ return getYVelocity(velocityTracker, event, -1 /* ACTIVE_POINTER_ID */);
+ }
+
public static boolean bothNull(@Nullable Object a, @Nullable Object b) {
return a == null && b == null;
}