wrong multitouch id

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.

Thank you.
#959 is created for it.
It is strange that no develop reports it.
Many games have been released with the codes.

Hello,
we get the same problem. Some touches losts and some pointers id was duplicit.

Our solution is:

final int idPointerUp = event.getPointerId(event.getActionIndex());
final float xPointerUp = event.getX(event.getActionIndex());
final float yPointerUp = event.getY(event.getActionIndex());

getActionIndex() exist since level 8, cocos2d-x will support since level 7(2.1), so we can not use this method.