Ошибка с Android 11 и (некоторыми) телефонами Samsung

Наткнулся на баг с мультитач.

Похоже, что из последнего обновления Android 11 мое приложение не может получить согласованные координаты внутри представления.

Протестировано с S20+ в лаборатории Samsung.

Допустим, я коснулся вида в его самой верхней левой точке. Создается событие MotionEvent, а функции event.getX() и event.getY() возвращают 0.

НО… если я нажму на экран двумя пальцами, один в случайной области экрана, а другой на том же верхнем левом пикселе предыдущего вида… последний получит

event.getX() -> 300 (примерно, в зависимости от того, где View находится внутри экрана) event.getY() -> 400 (то же самое)

Это баг или я что-то не так делаю? Этого не произошло ни с одним телефоном Samsung с Android 10 или с любым телефоном не Samsung.

Любое обходное решение?


person Davide Berra    schedule 28.01.2021    source источник
comment
Если вам нужно обработать касание более чем одним пальцем, вы должны сначала разрешить индекс указателя и использовать соответствующие перегрузки getX (pointerIndex) / getY (pointerIndex). Пробовали ли вы эти перегрузки, чтобы увидеть, получите ли вы правильные результаты?   -  person PerracoLabs    schedule 29.01.2021


Ответы (1)


Я также получил несколько отчетов об ошибках от пользователей моего приложения в Play Store. Я также нашел это

https://github.com/Swordfish90/Lemuroid/issues/178#issuecomment-782883990

Кажется, Samsung что-то напутал. Обходной путь, описанный в ссылке выше, похоже, решает проблему. Я лично нахожу этот обходной путь очень раздражающим, и его не нужно создавать таким образом. Не знаю, скоро ли эта проблема будет исправлена ​​​​Samsung ...

person grill2010    schedule 01.03.2021