08-03-2010 01:04 PM
I just looked at the response and I find it suspect. There HAS to be some reasoning to the oder behind the x and y coordinates the hardware is giving. I wouldn't expect that there is a little monkey inside the hardware flipping a coin and sending the results. If that was the case then it wouldn't be a limitation of the hardware it would simply mean that the hardware doesn't support multi-touch period.
Does this mean that the 9800 will also not support multi-touch?
08-03-2010 02:26 PM
I would guess that the hardware they are using for touch is returning values starting from the top-left corner to the bottom-right. So the lower value will always be reported first, or maybe the opposite (that is the only way i could suspect it is a harware bug/limitation). Depending on the application, you could use this to make a workaround, but I suspect in some instances there will be no efficient guaranteed workaround.
08-03-2010 02:36 PM
Yeah maybe. Still it would have been pretty clear that the support for multi-touch wasn't going to work correctly really early on and it should have been noted in the docs. I suspect they could or do note when the first touch happened and then give the touch ownership over the closest coords to it's previous position and then the other touch is what is left over. That is likely why the coordinates get switched when fingers cross axis.
08-03-2010 04:56 PM
You would think so, but in my short experience, RIM seems to be very reactive instead of proactive with software/hardware bugs and limitations. Look how long it took for them to get an external bug tracking system, and how long it takes to get a response on many of them. They seem to really pick and choose what battles/issues they want to respond to and devote resources to. Not sure what criteria they use for choosing priority, but I think this would have been a high enough one to have fixed within the two years since their first touch device.
08-10-2010 10:05 AM
I made some tests and the results are not very promising.
Using getMovePoints() has the same problem, as expected.
The tests were done by swiping finger 1 from top-left to bottom-left and finger 2 from bottom-right to top-right.
The coordinates swapping only occur when the same coordinate is reported for both fingers. Sometimes swapping does not occur, but it seems to be a condition for the swapping to occur. I wasn't able to get swapping when the coordinates did not match.
Doing the swiping quickly, there's still a lot of points returned and moving in a steady but fast pace can get a 10-15 coordinate interval between each reported point. Even with this interval, most of the time the interval would be shorted to report the same y or x coordinates for both fingers, i.e., before the crossing, they were at 15 points per reporting and in the crossing they only moved 4 or 5 points.
Sometimes, even with the quick but steady swiping, the OS would report 2, 3 or even more matches (same y) in a row or even with one or two different coordinates in the middle.
Maintaining one finger static (really static) does not have this problem. Even a slight deflection on the static finger, when the other finger is near one of it's coordinates, can result in swapping.
My findings so far suggest that:
- the swapping only occur when the same coordinate is reported for both fingers
- when the coordinates are the same, the swapping may not occur
- any movement of both fingers, no matter how small, may cause the swapping
- the coordinates may be "joined" if both fingers are moving in the same area (I did not try to find the size of this area) - maybe due to the area of the finger touching the screen
- the last point suggests that using 2 stylus may minimize this problem (smaller touch area - smaller "match" area)
- a fix may be possible, but it will incur a performance penalty (extra cycles to check for the swapping)
I also found out that the 9500 simulator reports 3 TouchEvent.DOWN when you press 2 fingers. Don't know if this occurs in the devices.
I'm appalled RIM does not come open on this problem. I haven't find a single note by RIM regarding this. And now it's obvious, at least for me, that they knew this all along. I'm feeling misled by RIM.
My client is bummed and so am I.
08-10-2010 11:30 AM
I decided to change my game to work around this kind of problem but I think if I had to get it to work I would try and use some kind of heristics. If you keep a history of all the points then maybe you could add checking if a finger movement has all of a sudden switch directions with another finger. It wouldn't be perfect but it might be good enough.