I think instead of this:
case MotionEvent.ACTION_POINTER_DOWN:
final int idPointerDown = event.getAction() >> MotionEvent.ACTION_POINTER_ID_SHIFT;
final float xPointerDown = event.getX(idPointerDown);
final float yPointerDown = event.getY(idPointerDown);
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionDown(idPointerDown, xPointerDown, yPointerDown);
}
});
break;
It should be something like this (also for ACTION_POINTER_UP):
case MotionEvent.ACTION_POINTER_DOWN:
final int idxPointerDown = event.getAction() >> MotionEvent.ACTION_POINTER_ID_SHIFT;
final int idPointerDown = event.getPointerId(idxPointerDown);
final float xPointerDown = event.getX(idxPointerDown);
final float yPointerDown = event.getY(idxPointerDown);
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionDown(idPointerDown, xPointerDown, yPointerDown);
}
});
break;
I had problem with the original version on Xperia Play. The new version worked for me perfectly on Xperia play, Nexus One, Galaxy S2.