if (event.getHistorySize() > 0) { mime(offset, value, delta, event.getEventTime() - event.getHistoricalEventTime(0), event); } else { mime(offset, value, delta, 0, event);
long dt = event.getEventTime() - event.getHistoricalEventTime(0); if (dt > 0) { // Sometimes (though rarely) dt==0 cause originally timing is in nanos, but is presented in millis. mVelocity = deltaOffset / dt;
void printSamples(MotionEvent ev) { final int historySize = ev.getHistorySize(); final int pointerCount = ev.getPointerCount(); for (int h = 0; h < historySize; h++) { System.out.printf("At time %d:", ev.getHistoricalEventTime(h)); for (int p = 0; p < pointerCount; p++) { System.out.printf(" pointer %d: (%f,%f)", ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h)); } } System.out.printf("At time %d:", ev.getEventTime()); for (int p = 0; p < pointerCount; p++) { System.out.printf(" pointer %d: (%f,%f)", ev.getPointerId(p), ev.getX(p), ev.getY(p)); } }
void printSamples(MotionEvent ev) { final int historySize = ev.getHistorySize(); final int pointerCount = ev.getPointerCount(); for (int h = 0; h < historySize; h++) { System.out.printf("At time %d:", ev.getHistoricalEventTime(h)); for (int p = 0; p < pointerCount; p++) { System.out.printf(" pointer %d: (%f,%f)", ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h)); } } System.out.printf("At time %d:", ev.getEventTime()); for (int p = 0; p < pointerCount; p++) { System.out.printf(" pointer %d: (%f,%f)", ev.getPointerId(p), ev.getX(p), ev.getY(p)); } }
public void addMovement(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { mBuffer.clear(); return; } long time = ev.getEventTime(); final int count = ev.getHistorySize(); for (int i = 0; i < count; i++) { addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i), ev.getHistoricalEventTime(i)); } addPoint(ev.getX(), ev.getY(), time); }
public void addMovement(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { mBuffer.clear(); return; } long time = ev.getEventTime(); final int count = ev.getHistorySize(); for (int i = 0; i < count; i++) { addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i), ev.getHistoricalEventTime(i)); } addPoint(ev.getX(), ev.getY(), time); }
public void addMovement(MotionEvent ev) { long time = ev.getEventTime(); final int N = ev.getHistorySize(); for (int i = 0; i < N; i++) { addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i), ev.getHistoricalEventTime(i)); } addPoint(ev.getX(), ev.getY(), time); }
&& (action & ((1 << ACTION_POINTER_INDEX_SHIFT) - 1)) != ACTION_POINTER_UP // processingHist ? event.getHistoricalEventTime(histIdx) : event.getEventTime());
((1 << ACTION_POINTER_INDEX_SHIFT) - 1)) != ACTION_POINTER_UP processingHist ? event.getHistoricalEventTime(histIdx) : event.getEventTime());
private int detectSwipe(MotionEvent move) { final int historySize = move.getHistorySize(); final int pointerCount = move.getPointerCount(); for (int p = 0; p < pointerCount; p++) { final int pointerId = move.getPointerId(p); final int i = findIndex(pointerId); if (i != UNTRACKED_POINTER) { for (int h = 0; h < historySize; h++) { final long time = move.getHistoricalEventTime(h); final float x = move.getHistoricalX(p, h); final float y = move.getHistoricalY(p, h); final int swipe = detectSwipe(i, time, x, y); if (swipe != SWIPE_NONE) { return swipe; } } final int swipe = detectSwipe(i, move.getEventTime(), move.getX(p), move.getY(p)); if (swipe != SWIPE_NONE) { return swipe; } } } return SWIPE_NONE; }
long dt = event.getEventTime() - event.getHistoricalEventTime(0); if (dt > 0) { // Sometimes (though rarely) dt==0 cause originally timing is in nanos, but is presented in millis. mVelocity = deltaOffset / dt;
/** * <p>Calculates the pinch velocity for the last <code>timeWindow</code> milliseconds.</p> * @param event * @param pointerA id of pointer A * @param pointerB id of pointer B * @param timeWindow * @return spacing between both pointers */ public static final float pinchVelocity(MotionEvent event, int pointerA, int pointerB, long timeWindow) { int indexA = event.findPointerIndex(pointerA); int indexB = event.findPointerIndex(pointerB); long eventTime = event.getEventTime(); long timeDelta = 0; float previousSpacing = spacingByIndex(event, indexA, indexB); float scale = 1; for(int i = 0, n = event.getHistorySize(); i < n && timeDelta < timeWindow; i++) { int index = (n - 1) - i; float x = event.getHistoricalX(indexA, index) - event.getHistoricalX(indexB, index); float y = event.getHistoricalY(indexA, index) - event.getHistoricalY(indexB, index); float spacing = (float) Math.sqrt(x * x + y * y); scale *= previousSpacing / spacing; previousSpacing = spacing; timeDelta = eventTime - event.getHistoricalEventTime(index); } return (float) Math.pow(Math.pow(scale, 1d / timeWindow), 1000d); }
.getHistoricalEventTime(historyPos));
pointerEvents[i] = new PointerEvent(PointerEventType.MOVE, event.getHistoricalX(pointerIndex, i), event.getHistoricalY(pointerIndex, i), eventTimeOffset + event.getHistoricalEventTime(i), event.getHistoricalPressure(pointerIndex, i), iinkPointerType, pointerId); pointerEvents[historySize] = new PointerEvent(PointerEventType.MOVE, event.getX(pointerIndex), event.getY(pointerIndex), eventTimeOffset + event.getEventTime(), event.getPressure(), iinkPointerType, pointerId); editor.pointerEvents(pointerEvents, true); pointerEvents[i] = new PointerEvent(PointerEventType.MOVE, event.getHistoricalX(pointerIndex, i), event.getHistoricalY(pointerIndex, i), eventTimeOffset + event.getHistoricalEventTime(i), event.getHistoricalPressure(pointerIndex, i), iinkPointerType, pointerId); editor.pointerEvents(pointerEvents, true);
private void processJoystickInput(MotionEvent event, int historyPos) { // Get joystick position. // Many game pads with two joysticks report the position of the second joystick // using the Z and RZ axes so we also handle those. // In a real game, we would allow the user to configure the axes manually. float x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_X, historyPos); if (x == 0) { x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_HAT_X, historyPos); } if (x == 0) { x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_Z, historyPos); } float y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_Y, historyPos); if (y == 0) { y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_HAT_Y, historyPos); } if (y == 0) { y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_RZ, historyPos); } // Set the ship heading. mShip.setHeading(x, y); step(historyPos < 0 ? event.getEventTime() : event.getHistoricalEventTime(historyPos)); }
private void processJoystickInput(MotionEvent event, int historyPos) { // Get joystick position. // Many game pads with two joysticks report the position of the second joystick // using the Z and RZ axes so we also handle those. // In a real game, we would allow the user to configure the axes manually. float x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_X, historyPos); if (x == 0) { x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_HAT_X, historyPos); } if (x == 0) { x = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_Z, historyPos); } float y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_Y, historyPos); if (y == 0) { y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_HAT_Y, historyPos); } if (y == 0) { y = getCenteredAxis(event, mLastInputDevice, MotionEvent.AXIS_RZ, historyPos); } // Set the ship heading. mShip.setHeading(x, y); step(historyPos < 0 ? event.getEventTime() : event.getHistoricalEventTime(historyPos)); }
final int historicalX = (int)me.getHistoricalX(pointerIndex, h); final int historicalY = (int)me.getHistoricalY(pointerIndex, h); final long historicalTime = me.getHistoricalEventTime(h); onGestureMoveEvent(historicalX, historicalY, historicalTime, false /* isMajorEvent */, null);