Add MULTI_FINGER_SWIPE motion classification
Bug: 251196347
Test: check events received by a custom tester app, and touches shown by
pointer location overlay
Change-Id: Ice71843404400e73f8170ae108e2e2c89cc1d9bd
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 4fbb249..1ff7ae6 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1491,11 +1491,23 @@
*/
public static final int CLASSIFICATION_TWO_FINGER_SWIPE = 3;
+ /**
+ * Classification constant: multi-finger swipe.
+ *
+ * The current event stream represents the user swiping with three or more fingers on a
+ * touchpad. Unlike two-finger swipes, these are only to be handled by the system UI, which is
+ * why they have a separate constant from two-finger swipes.
+ *
+ * @see #getClassification
+ * @hide
+ */
+ public static final int CLASSIFICATION_MULTI_FINGER_SWIPE = 4;
+
/** @hide */
@Retention(SOURCE)
@IntDef(prefix = { "CLASSIFICATION" }, value = {
CLASSIFICATION_NONE, CLASSIFICATION_AMBIGUOUS_GESTURE, CLASSIFICATION_DEEP_PRESS,
- CLASSIFICATION_TWO_FINGER_SWIPE})
+ CLASSIFICATION_TWO_FINGER_SWIPE, CLASSIFICATION_MULTI_FINGER_SWIPE})
public @interface Classification {};
/**
@@ -3941,7 +3953,8 @@
return "DEEP_PRESS";
case CLASSIFICATION_TWO_FINGER_SWIPE:
return "TWO_FINGER_SWIPE";
-
+ case CLASSIFICATION_MULTI_FINGER_SWIPE:
+ return "MULTI_FINGER_SWIPE";
}
return "UNKNOWN";
}
diff --git a/native/android/input.cpp b/native/android/input.cpp
index 812db0f..5e5ebed 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -297,6 +297,8 @@
return AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS;
case android::MotionClassification::TWO_FINGER_SWIPE:
return AMOTION_EVENT_CLASSIFICATION_TWO_FINGER_SWIPE;
+ case android::MotionClassification::MULTI_FINGER_SWIPE:
+ return AMOTION_EVENT_CLASSIFICATION_MULTI_FINGER_SWIPE;
}
}