Here's a few other things you could try to help diagnose this further:
- What moment in time did the switch happen? This could be done by logging not only the
ACTION_UP
, but also theACTION_MOVE
. Look for sudden jumps. - Look at some of the Historical Data (
getHistoricalX(int pointerIndex, int pos)
. Look to see if there is a sudden jump. - Try removing the MotionEventCompat calls, and just calling the index directly. Nobody uses pre-Eclair anymore, there's no reason to still have the compatibility feature in use.
The bottom line is, however, that the expected behavior is as you saw in the Galaxy Ace. It looks to me like you found a bug in FairPhone. I'm not sure how much work you want to spend debugging it, but you can probably find a way around it if you want to, via the steps I provided above.