Подтвердить что ты не робот

Кто-нибудь знает, что означает выход из getevent?

Я пытаюсь выяснить, какой формат выводится из команды getevent в оболочке adb.

Например, вывод выглядит следующим образом:

adb shell getevent -t | grep event1

Флаг -t предоставляет временную привязку, и grep должен фильтровать сообщения только для событий сенсорного экрана.

22779-197145:/dev/input/event1: 0003 003a 00400001

22779-197999:/dev/input/event1: 0003 0039 82c30a97

22779-218477:/dev/input/event1: 0003 003a 00390001

22779-219301:/dev/input/event1: 0003 0039 82c30aa4

22779-230623:/dev/input/event1: 0003 003a 002f0001

22779-231416:/dev/input/event1: 0003 0039 82c10aae

22779-242769:/dev/input/event1: 0003 003a 00190001

22779-243623:/dev/input/event1: 0003 0039 82c60ac1

22779-253328:/dev/input/event1: 0003 003a 00000002

22779-254213:/dev/input/event1: 0003 0039 82da0ae4

22779-415590:/dev/input/event1: 0003 003a 00000000

22779-416444:/dev/input/event1: 0003 0039 800b1549

Проблема в том, что я понятия не имею, как обрабатывать эту информацию. В то время как секундное поле секунд чередуется между двумя кодами (что было предложено соответствовать значениям X и Y), последнее поле, похоже, содержит огромные или очень маленькие числа.

Кроме того, временная метка также чужда мне. Интересно, является ли часть после тире наносекундами?

Кто-нибудь знает, где я могу узнать о формате этих вещей?

4b9b3361

Ответ 1

/dev/input/eventX используется подсистемой ядра evdev linux, которая представляет собой общий процесс обработки событий событий ввода и передает его timestamped приложениям. Вы можете попробовать это, чтобы получить более понятный для пользователя вывод о том, что происходит на Android с помощью инструмента getevent, например:

$ adb shell getevent -lp /dev/input/event1

Чтобы получить все параметры getevent, выполните:

$ adb shell getevent --help

Подробнее о getevent инструменте здесь и о evdev в Wiki.

Согласно источникам ядра, evdev использует формат времени наносекундного разрешения (ktime), а источники находятся в linux/next/include/linux/ktime.h или здесь, если вы хотите просмотреть его в Интернете.

Ответ 2

Не похоже, что в вашем фрагменте были сделаны сенсорные штрихи или, возможно, x и y не были записаны.

Обычно координаты X для сенсорного экрана находятся под 0003 0035 и Y находятся под 0003 0036, а 0003 0039 обычно для пальца вниз (с последним полем, больше похожим на 00000000) и для палец вверх (последнее поле также больше похоже на ffffffff).

Непонятно, для чего нужен 0003 003a, но он кажется малозначимым, и это определенно не шестнадцатеричный X или Y.

Кроме того, метка времени измеряется в секундах. Раздел перед тире в метке времени представляет собой Unix Epox 1 января 1970 года в формате UTC, а временная метка после тире становится датой, основанной на секундах с вышеупомянутого времени и даты.

Надеюсь, что добавит еще больше ясности.

Ответ 4

В настоящее время я работаю с одним устройством плюс 5t, и когда я пытаюсь выполнить 'adb shell getevent', он генерирует события для считывания, но кажется, что он не генерирует события для касаний...

Я не понимаю, почему он так себя ведет. Проблема не с этим конкретным устройством, но я заметил, что это происходит на более высоких версиях Android.

Можете ли вы помочь мне здесь.