framework/src/org/apache/cordova/MultiTouchPolyfillWebViewClient.java
/**
	 * Taken with a lot of appreciation from
	 * http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch-events/1775
	 *
	 * @param event
	 * @return String Some information on the MotionEvent
	 */


@param event
@return String Some information on the MotionEvent
@param event @return String Some information on the MotionEvent
private String dumpEvent(MotionEvent event) {
		String names[] = {"DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE",
			"POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?"};
		StringBuilder sb = new StringBuilder();
		int action = event.getAction();
		int actionCode = action & MotionEvent.ACTION_MASK;
		if (actionCode == MotionEvent.ACTION_POINTER_DOWN
				|| actionCode == MotionEvent.ACTION_POINTER_UP
				|| actionCode == MotionEvent.ACTION_DOWN
				|| actionCode == MotionEvent.ACTION_UP) {
			sb.append("FINGER ").append(
					(action >> MotionEvent.ACTION_POINTER_ID_SHIFT) + 1);
			sb.append(": ");
		}
		sb.append("ACTION_").append(names[actionCode]);
		sb.append(" [");
		for (int i = 0; i < event.getPointerCount(); i++) {
			sb.append("#").append(i);
			sb.append("(pid_").append(event.getPointerId(i));
			sb.append(")=").append((int) event.getX(i));
			sb.append(",").append((int) event.getY(i));
			if (i + 1 < event.getPointerCount()) {
				sb.append("; ");
			}
		}
		sb.append("]");
		return sb.toString();
	}
private String dumpEvent ( MotionEvent event ) { String names [ ] = { "DOWN" , "UP" , "MOVE" , "CANCEL" , "OUTSIDE" , "POINTER_DOWN" , "POINTER_UP" , "7?" , "8?" , "9?" } ; StringBuilder sb = new StringBuilder ( ) ; int action = event . getAction ( ) ; int actionCode = action & MotionEvent . ACTION_MASK ; if ( actionCode == MotionEvent . ACTION_POINTER_DOWN || actionCode == MotionEvent . ACTION_POINTER_UP || actionCode == MotionEvent . ACTION_DOWN || actionCode == MotionEvent . ACTION_UP ) { sb . append ( "FINGER " ) . append ( ( action >> MotionEvent . ACTION_POINTER_ID_SHIFT ) + 1 ) ; sb . append ( ": " ) ; } sb . append ( "ACTION_" ) . append ( names [ actionCode ] ) ; sb . append ( " [" ) ; for ( int i = 0 ; i < event . getPointerCount ( ) ; i ++ ) { sb . append ( "#" ) . append ( i ) ; sb . append ( "(pid_" ) . append ( event . getPointerId ( i ) ) ; sb . append ( ")=" ) . append ( ( int ) event . getX ( i ) ) ; sb . append ( "," ) . append ( ( int ) event . getY ( i ) ) ; if ( i + 1 < event . getPointerCount ( ) ) { sb . append ( "; " ) ; } } sb . append ( "]" ) ; return sb . toString ( ) ; }
Taken with a lot of appreciation from
 http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch-events/1775
Taken with a lot of appreciation from http : // www . zdnet . com / blog / burnette / how - to - use - multi - touch - in - android - 2 - part - 3 - understanding - touch - events / 1775