Enviar evento táctil de ADB a un dispositivo

Estoy intentando enviar acontecimientos del tacto a un dispositivo usando el comando de la cáscara de ADB, de modo que pueda hacer una cierta automatización básica para las pruebas de UI. He seguido la discusión en algunos hilos anteriores con respecto a esto.

Confirmé sobre cómo conseguir los acontecimientos y usar los acontecimientos, para enviar 6 acontecimientos para cada tacto (xcoord, ycoord, 2 para la prensa, 2 para la liberación) y era fácil utilizar esta información a sendevents, pero un getevent para la pantalla táctil para un Dispositivo parece generar demasiados eventos.

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

Realmente aprecio tu ayuda.

Estoy trabajando en la grabación de los eventos táctiles en el teléfono. Después de eso, deseo enviar el mismo evento de nuevo al dispositivo como parte de las pruebas de IU.

Por favor ayuda

Android viene con una herramienta de línea de comandos de entrada que puede simular varios eventos de entrada. Para simular el uso de derivaciones:

input tap xy 

Puede utilizar el shell de adb para ejecutar el comando de forma remota:

 adb shell input tap xy 

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> 

Para enviar eventos táctiles es necesario:

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 un par 0 0):

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

3 Enviar evento de liberación de dedo (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

Me las arreglé para grabar una sesión y reproducirla con sólo bash y adb.

Esto es lo que hice, espero que ayude a alguien.

Registrar una serie de eventos

  1. Configurar el PC para grabar 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. Detener el comando adb en el PC con ctrl-c

Reproducir 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 

Es posible que desee utilizar monkeyrunner de esta manera:

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

También puede hacer una arrastrar, iniciar activies etc Echa un vistazo a la api de MonkeyDevice .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.