|
@@ -147,14 +147,14 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
|
|
|
public AndroidInput(Context ctx, AttributeSet attribs) {
|
|
|
super(ctx, attribs);
|
|
|
- detector = new GestureDetector(this);
|
|
|
+ detector = new GestureDetector(null, this, null, false);
|
|
|
scaledetector = new ScaleGestureDetector(ctx, this);
|
|
|
|
|
|
}
|
|
|
|
|
|
public AndroidInput(Context ctx) {
|
|
|
super(ctx);
|
|
|
- detector = new GestureDetector(this);
|
|
|
+ detector = new GestureDetector(null, this, null, false);
|
|
|
scaledetector = new ScaleGestureDetector(ctx, this);
|
|
|
}
|
|
|
|
|
@@ -219,15 +219,18 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
|
boolean bWasHandled = false;
|
|
|
TouchEvent touch;
|
|
|
+ // System.out.println("native : " + event.getAction());
|
|
|
|
|
|
- // Try to detect gestures
|
|
|
- this.detector.onTouchEvent(event);
|
|
|
- this.scaledetector.onTouchEvent(event);
|
|
|
|
|
|
final int historySize = event.getHistorySize();
|
|
|
final int pointerCount = event.getPointerCount();
|
|
|
|
|
|
+
|
|
|
switch (event.getAction()) {
|
|
|
+
|
|
|
+ case MotionEvent.ACTION_POINTER_1_DOWN:
|
|
|
+ case MotionEvent.ACTION_POINTER_2_DOWN:
|
|
|
+ case MotionEvent.ACTION_POINTER_3_DOWN:
|
|
|
case MotionEvent.ACTION_DOWN:
|
|
|
|
|
|
if (!dontSendHistory) {
|
|
@@ -245,19 +248,25 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- // Convert all pointers into events
|
|
|
- for (int p = 0; p < pointerCount; p++) {
|
|
|
- touch = getNextFreeTouchEvent();
|
|
|
- touch.set(Type.DOWN, event.getX(p), this.getHeight() - event.getY(p), 0, 0);
|
|
|
- touch.setPointerId(event.getPointerId(p));
|
|
|
- touch.setTime(event.getEventTime());
|
|
|
- touch.setPressure(event.getPressure(p));
|
|
|
- processEvent(touch);
|
|
|
- }
|
|
|
+
|
|
|
+ // System.out.println("DOWN : " + pointerCount);
|
|
|
+
|
|
|
+ // only considering the primary pointer event. other pointers will have their own event
|
|
|
+ //for (int p = 0; p < pointerCount; p++) {
|
|
|
+ touch = getNextFreeTouchEvent();
|
|
|
+ touch.set(Type.DOWN, event.getX(0), this.getHeight() - event.getY(0), 0, 0);
|
|
|
+ touch.setPointerId(event.getPointerId(0));
|
|
|
+ touch.setTime(event.getEventTime());
|
|
|
+ touch.setPressure(event.getPressure(0));
|
|
|
+ processEvent(touch);
|
|
|
+ //}
|
|
|
|
|
|
bWasHandled = true;
|
|
|
break;
|
|
|
|
|
|
+ case MotionEvent.ACTION_POINTER_1_UP:
|
|
|
+ case MotionEvent.ACTION_POINTER_2_UP:
|
|
|
+ case MotionEvent.ACTION_POINTER_3_UP:
|
|
|
case MotionEvent.ACTION_UP:
|
|
|
|
|
|
if (!dontSendHistory) {
|
|
@@ -276,15 +285,16 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // Convert all pointers into events
|
|
|
- for (int p = 0; p < pointerCount; p++) {
|
|
|
- touch = getNextFreeTouchEvent();
|
|
|
- touch.set(Type.UP, event.getX(p), this.getHeight() - event.getY(p), 0, 0);
|
|
|
- touch.setPointerId(event.getPointerId(p));
|
|
|
- touch.setTime(event.getEventTime());
|
|
|
- touch.setPressure(event.getPressure(p));
|
|
|
- processEvent(touch);
|
|
|
- }
|
|
|
+
|
|
|
+ // only considering the primary pointer event. other pointers will have their own event
|
|
|
+ //for (int p = 0; p < pointerCount; p++) {
|
|
|
+ touch = getNextFreeTouchEvent();
|
|
|
+ touch.set(Type.UP, event.getX(0), this.getHeight() - event.getY(0), 0, 0);
|
|
|
+ touch.setPointerId(event.getPointerId(0));
|
|
|
+ touch.setTime(event.getEventTime());
|
|
|
+ touch.setPressure(event.getPressure(0));
|
|
|
+ processEvent(touch);
|
|
|
+ //}
|
|
|
|
|
|
bWasHandled = true;
|
|
|
break;
|
|
@@ -313,7 +323,9 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+// if (event.getPointerCount() > 1) {
|
|
|
+// System.out.println("MOVE : " + event.getPointerCount());
|
|
|
+// }
|
|
|
// Convert all pointers into events
|
|
|
for (int p = 0; p < event.getPointerCount(); p++) {
|
|
|
Vector2f lastPos = lastPositions.get(event.getPointerId(p));
|
|
@@ -332,12 +344,12 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
bWasHandled = true;
|
|
|
break;
|
|
|
|
|
|
- // TODO: implement motion events
|
|
|
- case MotionEvent.ACTION_POINTER_UP:
|
|
|
- break;
|
|
|
-
|
|
|
- case MotionEvent.ACTION_POINTER_DOWN:
|
|
|
- break;
|
|
|
+// // TODO: implement motion events
|
|
|
+// case MotionEvent.ACTION_POINTER_UP:
|
|
|
+// break;
|
|
|
+//
|
|
|
+// case MotionEvent.ACTION_POINTER_DOWN:
|
|
|
+// break;
|
|
|
|
|
|
case MotionEvent.ACTION_OUTSIDE:
|
|
|
break;
|
|
@@ -345,6 +357,11 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
case MotionEvent.ACTION_CANCEL:
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ // Try to detect gestures
|
|
|
+ this.detector.onTouchEvent(event);
|
|
|
+ this.scaledetector.onTouchEvent(event);
|
|
|
+
|
|
|
return bWasHandled;
|
|
|
}
|
|
|
|
|
@@ -551,7 +568,6 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public boolean onSingleTapConfirmed(MotionEvent event) {
|
|
|
//Nothing to do here the tap has already been detected.
|
|
|
return false;
|
|
@@ -578,6 +594,7 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
touch.setScaleSpan(scaleGestureDetector.getCurrentSpan());
|
|
|
touch.setScaleFactor(scaleGestureDetector.getScaleFactor());
|
|
|
processEvent(touch);
|
|
|
+ // System.out.println("scaleBegin");
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -590,6 +607,7 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
touch.setScaleSpan(scaleGestureDetector.getCurrentSpan());
|
|
|
touch.setScaleFactor(scaleGestureDetector.getScaleFactor());
|
|
|
processEvent(touch);
|
|
|
+ // System.out.println("scale");
|
|
|
|
|
|
return false;
|
|
|
}
|
|
@@ -610,6 +628,7 @@ public class AndroidInput extends GLSurfaceView implements TouchInput,
|
|
|
touch.setPointerId(0);
|
|
|
touch.setTime(e1.getEventTime());
|
|
|
processEvent(touch);
|
|
|
+ //System.out.println("scroll " + e1.getPointerCount());
|
|
|
return false;
|
|
|
}
|
|
|
|