Я написал приложение для Android, которое захватывает все TouchEvents (например, DOWN, UP, MOVE ..) и выгружает его в файл журнала.
Приложение отлично работает с настоящими человеческими прикосновениями, со скоростью 1-> 5 касаний в секунду. Однако, когда я использую механический генератор касаний, работающий со скоростью около 100-> 500 касаний в секунду, файл журнала показывает меньшее количество касаний, чем я на самом деле генерировал.
Посмотрев на прикосновения, записанные в файле журнала, с отметками времени каждого события прикосновения, я обнаружил очень странную картину захвата событий приложением. Всегда есть 2 последовательных события, которые находятся на расстоянии 2 миллисекунды, после чего следует другое событие примерно через 50 мс.
Например:
1-е событие произошло в 10-й миллисекунде
Второе событие произошло через 12 миллисекунд, то есть через 2 миллисекунды после первого
3-е событие произошло на 62-й миллисекунде, что составляет 50 миллисекунд после первого
4-е событие произошло за 64-е миллисекунды, то есть через 2 миллисекунды после первого
затем следующее событие произошло на 104-й миллисекунде ... и затем на 106-м ... и так далее
Я обыскивал эту проблему без удачи. Однако я обнаружил, что Android допускает двойное касание, но не допускает более двух последовательных касаний. Это означает, что вы можете иметь 2 последовательных касания очень близко друг к другу, но не более 2. Я предполагаю, что драйвер экрана отключает 3-й, 4-й .... касание даже в течение некоторого периода времени (очень вероятно, 50 миллисекунд), пока это позволяет следующему событию случиться снова. Причиной этого является то, что предполагается, что человек не может дотронуться слишком быстро, и такое прикосновение следует отключить и рассматривать как ошибку / шум.
Обратите внимание, что это отличается от мультитача, так как я говорю о последовательных событиях, происходящих в разные моменты времени (даже если они очень близки) с очень высокой скоростью, а не множественные события касания происходят одновременно в мультитаче.
Я хотел бы спросить, если кто-нибудь знает, почему существует такой механизм фильтрации? и как их отключить, если это вообще возможно? Моя цель - записать как можно больше событий касания с максимально возможной скоростью.
Я был бы очень признателен, если бы кто-нибудь смог подтвердить / подтвердить мою гипотезу или помочь мне обойти фильтр, который использует Android.
Большое спасибо за то, что прочитали все до этого момента :).