Кто-нибудь знает, что означает выход из 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), последнее поле, похоже, содержит огромные или очень маленькие числа.
Кроме того, временная метка также чужда мне. Интересно, является ли часть после тире наносекундами?
Кто-нибудь знает, где я могу узнать о формате этих вещей?
Ответы
Ответ 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, а временная метка после тире становится датой, основанной на секундах с вышеупомянутого времени и даты.
Надеюсь, что добавит еще больше ясности.
Ответ 3
0x35 = ось X
0x36 = ось Y
перейдите по этой ссылке для инструмента Getevent
https://source.android.com/devices/input/getevent
и чтобы увидеть значение каждой детали, следуйте этому заголовочному файлу.
https://android.googlesource.com/kernel/msm.git/+/android-msm-hammerhead-3.4-kk-r1/include/linux/input.h
Ответ 4
В настоящее время я работаю с одним устройством плюс 5t, и когда я пытаюсь выполнить 'adb shell getevent', он генерирует события для считывания, но кажется, что он не генерирует события для касаний...
Я не понимаю, почему он так себя ведет. Проблема не с этим конкретным устройством, но я заметил, что это происходит на более высоких версиях Android.
Можете ли вы помочь мне здесь.