- if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) {
- int32_t action = AMotionEvent_getAction(event);
+ int32_t source = AInputEvent_getSource(event);
+ if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION
+ && source == AINPUT_SOURCE_TOUCHSCREEN) {
+ int32_t action = AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK;
+ /* Pointer ID for clicks */
+ int32_t pidx = AMotionEvent_getAction(event) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT;
+ /* TODO: Handle multi-touch; also handle multiple sources */
+ if (0) {
+ LOGI("motion action=%d index=%d source=%d", action, pidx, source);
+ int count = AMotionEvent_getPointerCount(event);
+ int i;
+ for (i = 0; i < count; i++) {
+ LOGI("multi(%d): %.01f,%.01f",
+ AMotionEvent_getPointerId(event, i),
+ AMotionEvent_getX(event, i), AMotionEvent_getY(event, i));
+ }
+ }