Android мультитач головные боли - PullRequest
3 голосов
/ 21 февраля 2011

У меня настоящая проблема при попытке справиться с мультитач-событиями.По сути, мне нужно определить, отпустил ли кто-то палец, касаясь экрана в другом месте.

В соответствии с этим ранее отвеченным вопросом, я должен использовать MotionEvent.ACTION_POINTER_UP MotionEvent.ACTION_UP.

Насколько я могу судить, следующий код должен сообщать мне, был ли поднят палец:

    int action = event.getActionMasked();
    mCurUp = ( action == MotionEvent.ACTION_UP ) || ( action == MotionEvent.ACTION_POINTER_UP );

На практике я вижу, что это работает некоторые времени.Если я действительно осторожен, я могу удерживать свой левый палец на экране и поднимать правый палец, и никакие события не запускаются вообще!Обычно в какой-то момент мой левый палец начинает колебаться, генерируя событие ACTION_MOVE .В этот момент он генерирует событие (262), которое, я думаю, соотносится с ACTION_POINTER_UP

Так что мне интересно, видели ли это другие люди, и я также подозреваю, что это может быть общеизвестноплохой сенсорный экран на моем HTC Desire, вызывающий это.Или, возможно, я делаю что-то в корне неправильно.У кого-нибудь есть проверенный код, который может надежно обнаружить отрывание пальца от сенсорного экрана?

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Возможно, странное поведение вызвано вашим устройством (HTC Desire == Nexus One screen), а не вашим кодом.

Знаете ли вы, что Android поддерживает multi-touch, поддерживаются не все телефонынастоящий мультитач?

Прочитайте это

http://androidandme.com/2010/03/news/is-multitouch-broken-on-the-nexus-one/

и это

http://groups.google.com/group/android-developers/msg/70e9dd235d519955

Приветствия

0 голосов
/ 27 июня 2012

Этот класс выглядит так, как будто он имеет обходной путь для вашей проблемы и многих других, вызванных ошибочной реализацией мультитача на некоторых устройствах Android 1.x / 2.x

http://code.google.com/p/android-multitouch-controller/

ПроблемаВы упомянули, что там объясняется следующее:

ПРИМЕЧАНИЕ. Поворот является странным на старых устройствах с сенсорным экраном, которые используют Synaptics или Synaptics-подобный датчик «2x1D» (G1, MyTouch, Droid, Nexus One), а ненастоящий 2D-датчик, такой как HTC Incredible или HTC EVO 4G.Причудливое поведение возникает в результате «привязки оси», когда две точки сближаются в X или Y, и «путаницы ординат», где (x1, y1) и (x2, y2) путаются для (x1, y2) и (x2,у1).Нет другого способа обойти это, кроме как держать два пальца в одних и тех же двух относительных квадрантах (то есть держать их на передней или задней диагонали) или запретить вращение на этих устройствах.(Несмотря на дезинформацию в Интернете, нет также встроенного программного обеспечения или обновления программного обеспечения, которые могут решить эту проблему, это аппаратное ограничение. Надеемся, что все новые телефоны будут иметь настоящий сенсорный 2D-сенсор.)

...