имитация касания с помощью ADB [дубликат]

этот вопрос уже есть ответ здесь:

Я пытаюсь отправить сенсорные события с помощью пакетных файлов (.bat) и оболочка adb.

Я попытался повторно отправить события, которые я получаю от оболочки adb getevents, и это даже не работает хотя команда проходит без ошибок. Есть идеи?

как имитировать сенсорное событие и событие выпуска по заданной (x,y) координате с помощью оболочки ADB?

2 ответов


поскольку он, кажется, меняется в зависимости от версии Android, я предлагаю вам следовать этим инструкциям:

  1. Start dump motion event вам нужно воспроизвести:

    ~$ adb shell getevent | grep event2
    

    grep очень полезно фильтровать выход.

  2. событие движения, которое вы хотите воспроизвести;

  3. затем просто преобразуйте все значения из шестнадцатеричных в дамп в десятичные значения! :)


найти то, что eventX работает для вас:

  1. запустите терминал и введите:

    ~$ adb shell getevent
    

вы увидите быстро движущиеся следы, например, с /dev/input / event4 ......

  1. сенсорный экран один раз

вы должны видеть между event4 несколько eventX и эти eventX прямо в момент касания

будет ваш входной интерфейс для воспроизведения событий движения! :)

источник.


мне удалось эмулировать событие на sony xperia LT26i используя

adb shell getevent | grep event2

для захвата и преобразования всех значений из Hex в десятичную, и поместив сгенерированную последовательность в shellscript

adb shell sendevent /dev/input/event2 3 57 23710
adb shell sendevent /dev/input/event2 3 53 329
adb shell sendevent /dev/input/event2 3 54 1183 
adb shell sendevent /dev/input/event2 3 52 0
adb shell sendevent /dev/input/event2 0 0 0
adb shell sendevent /dev/input/event2 3 57 4294967295
adb shell sendevent /dev/input/event2 0 0 0

Я понял из сообщений в связанном форуме, что строки 2 и 3 устанавливают позицию X и Y следующие 2 строки-touch press, а нижние 2 строки-touch release, я еще не понял, что делает первая строка, но она необходима для ее работы. Я надеюсь это полезно для вас