Problem z multi-touch w Nexus OneDzisiaj będzie trochę gdybania ;) Zrobiło się głośno o tym, że Nexus One 'gubi się' przy obsłudze multi-touch. Google obwinia HTC za użycie niskiej jakości ekranu dotykowego. Niestety wydaje mi się, że nie uda się tego rozwiązać w aktualizacji oprogramowania. Dlaczego? O tym w dalszej części.
Według wikipedii występują dwa rodzaje pojemnościowego wykrywania dotyku:
There are two types of capacitive sensing system. Transcapacitance, where the object (finger, conductive stylus) alters the transcapacitance coupling between row and column electrodes, which are scanned sequentially.[3] The second is Absolute Capacitance where the object (finger, etc.) senses the presence and absolute position horizontally and vertically on the surface. Subtraction of a preceding absolute position from the present absolute position yields the relative motion of the object/finger during that time.
Nexus One nie miał obsługi multi-touch od samego początku i został on dodany dopiero jako aktualizacja. Skoro telefon nie miał w założeniu takiej funkcjonalności (a przynajmniej tak to wygląda), to przypuszczam, że został użyty pierwszy typ opisywanego ekranu. Oznacza to tyle, że multi-touch może być jedynie emulowany.
Mamy dostęp do informacji o dotyku w poziomie i pionie:

Gdy dodamy drugi punkt będzie wyglądać to tak:

Na podstawie starych i nowych informacji możemy wydedukować który obszar na każdej z osi odpowiada któremu miejscu dotyku. Problem pojawia się w momencie, gdy obszary te zaczną się pokrywać:

Teraz mamy tylko jeden obszar na osi pionowej i jest on przyporządkowany do obu punktów. Jeżeli rozsuniemy ponownie punkty, tak, żeby obszary już się nie pokrywały nie jesteśmy w stanie określić który obszar powinien odpowiadać któremu miejscu dotyku:


Możemy próbować używać różnego rodzaju heurystyk, żeby przewidzieć jaka powinna być poprawna kolejność (np. jak wyglądało przesuwanie dotyków w ciągu kilku ostatnich odczytów), ale niestety nigdy nie będzie to w 100% dobre.
Mam nadzieję, że się mylę -- Nexus One to ciekawy telefon i jest (jeszcze) jednym z kandydatów na mój nowy sprzęt ;)