void ControlPoint::fingerAdded(const FingerEventArgs &e) { if(fingerDown != NULL) { fingerDown(*this, e); } }
//callback extern int32_t __android_handle_input(struct android_app* app, AInputEvent* event){ unsigned int action = AMotionEvent_getAction(event) & AMOTION_EVENT_ACTION_MASK; unsigned int actionPointerIndex = (action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; if (action == AMOTION_EVENT_ACTION_DOWN || action == AMOTION_EVENT_ACTION_POINTER_DOWN) { if(fingerDown){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerDown(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_UP || action == AMOTION_EVENT_ACTION_POINTER_UP) { //up if(fingerUp){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerUp(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_MOVE) { //move if(fingerMove){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerMove(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_CANCEL) { } else { return 0; } }
//callback extern int32_t __android_handle_input(struct android_app* app, AInputEvent* event){ /* Input source */ int nSourceId = AInputEvent_getSource( event ); //not supported device? if (!(nSourceId == AINPUT_SOURCE_TOUCHPAD || nSourceId == AINPUT_SOURCE_KEYBOARD || nSourceId == AINPUT_SOURCE_TOUCHSCREEN)) return 0; //keyboard if(nSourceId == AINPUT_SOURCE_KEYBOARD) { if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) { //keybord down //get key code unsigned int keyAction = AKeyEvent_getAction(event); // if( keyDown && keyAction == AKEY_EVENT_ACTION_DOWN ) { keyDown(app->userData,AKeyEvent_getKeyCode(event)); } else if( keyUp && keyAction == AKEY_EVENT_ACTION_UP ) { keyUp(app->userData,AKeyEvent_getKeyCode(event)); } else { return 0; } return 1; } return 0; } //action unsigned int unmaskAction = AMotionEvent_getAction(event); //base action unsigned int action = unmaskAction & AMOTION_EVENT_ACTION_MASK; //pointer action unsigned int actionPointerIndex = (unmaskAction & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK); actionPointerIndex >>= AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; if (action == AMOTION_EVENT_ACTION_DOWN) { //all down if(fingerDown){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerDown(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_POINTER_DOWN ) { //one down if(fingerDown){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); if( pointerFingerId==actionPointerIndex ) { fingerDown(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } } else if (action == AMOTION_EVENT_ACTION_UP) { //up all if(fingerUp){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerUp(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_POINTER_UP) { //up one if(fingerUp){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); if( pointerFingerId==actionPointerIndex ) { fingerUp(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } } else if (action == AMOTION_EVENT_ACTION_MOVE) { //move if(fingerMove){ int count = AMotionEvent_getPointerCount(event); int i = 0; for(;i < count ; i++) { unsigned int pointerFingerId = AMotionEvent_getPointerId(event, i); fingerMove(app->userData,pointerFingerId, AMotionEvent_getX(event, i), AMotionEvent_getY(event, i), AMotionEvent_getPressure(event, i)); } } } else if (action == AMOTION_EVENT_ACTION_CANCEL) { } else { return 0; } return 1; }