studio programacion móviles libro example desarrollo curso aplicaciones android adb

android - programacion - enviar eventos táctiles a un dispositivo a través de adb



manual de programacion android pdf (4)

Android viene con una herramienta de línea de comandos de entrada que puede simular eventos de entrada diversos.
Para simular un tap , utiliza:

input tap x y

Ejecuta el comando de input remotamente usando adb shell :

adb shell input tap x y

Otras opciones son:

shell@m0:/ $ input input usage: input ... input text <string> input keyevent <key code number or name> input [touchscreen|touchpad|touchnavigation] tap <x> <y> input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)] input trackball press input trackball roll <dx> <dy>

Estoy tratando de enviar eventos táctiles a un dispositivo usando el comando adb shell , de modo que pueda hacer algo de automatización básica para las pruebas de UI. He seguido la discusión en algunos hilos anteriores con respecto a esto.

sendevent acerca de obtener los eventos y el uso de sendevent para enviar 6 eventos por cada toque (xcoord, ycoord, 2 para la prensa, 2 para la publicación) y fue fácil de usar esta información con sendevent , pero el comando getevent para el dispositivo con pantalla táctil Parece generar demasiados eventos.

¿Alguien ha logrado enviar un evento táctil desde adb a un dispositivo? ¿Podría por favor compartir la solución.

Estoy trabajando en grabar los eventos táctiles en el teléfono. Después de eso, deseo enviar el mismo evento al dispositivo como parte de las pruebas de UI.

Por favor ayuda


Es posible que desee utilizar monkeyrunner esta manera:

$ monkeyrunner >>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice >>> device = MonkeyRunner.waitForConnection() >>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)

También puede arrastrar, iniciar actividades, etc. Eche un vistazo a la API de MonkeyDevice .


Logré grabar una sesión y reproducirla solo con bash y adb.

Esto lo que hice, espero que ayude a alguien.

Graba una serie de eventos

  1. Configure la PC para registrar datos en un archivo ( /tmp/android-touch-events.log )

    $ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log

  2. hacer algunas cosas en el teléfono
  3. Detenga el comando adb en la PC con ctrl-c

Repetir los eventos grabados.

Este comando hará la conversión hexadecimal en awk

$ awk ''{printf "%s %d %d %d/n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}'' /tmp/android-touch-events.log | xargs -l adb shell sendevent


Para enviar un evento táctil necesitas hacer:

1 Establecer coordenadas:

adb shell sendevent /dev/input/event2 3 0 x adb shell sendevent /dev/input/event2 3 1 y

2 Enviar evento táctil (debe tener 0 0 0 par):

adb shell sendevent /dev/input/event2 1 330 1 adb shell sendevent /dev/input/event2 0 0 0

3 Enviar evento de dedo de liberación (debe tener 0 0 0 par):

adb shell sendevent /dev/input/event2 1 330 0 adb shell sendevent /dev/input/event2 0 0 0

Tenga en cuenta:

1 Puede grabar eventos:

adb shell getevent

2 si usa getevent, todos los valores de evento están en hexadecimal.

Saludos cordiales, Yahor