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>
Esta pregunta ya tiene una respuesta aquí:
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
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
- hacer algunas cosas en el teléfono
- 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