5 votos

¿Una alternativa más rápida a `input`?

Estoy intentando automatizar una tarea en mi teléfono Android (no rooteado).

Mientras lo tengo "funcionando" usando input , es bastante lento debido a que tarda ~0,7s por evento. (Básicamente, sólo necesito enviar un montón de eventos de toque, así que lo que tengo ahora es una secuencia de adb shell input tap $x $y .)

He intentado sendevent pero me da "permiso denegado". (No estoy seguro de por qué; el dispositivo es supuestamente escribible por el input del que es miembro el usuario de la shell... y obviamente, el input puede enviar eventos).

¿Hay algún truco para conseguir sendevent para trabajar? O alguna forma de enviar varios comandos en una sola invocación de input ?

Preferiría soluciones que no requieran la instalación de software de terceros...

0 votos

Te recomendaría editar tu post y añadir más detalles sobre la tarea que quieres automatizar. En base a lo que has escrito parece estar relacionado con la escritura de texto, pero el resto no está claro, lo que hace difícil escribir una buena respuesta.

0 votos

@Robert, lo siento... no es texto, sólo un montón de eventos de tap con coordenadas x,y conocidas. Básicamente, sólo quiero enviar un montón de eventos de toque a puntos específicos, pero es muy lento en este momento porque input es lento.

2voto

abc Puntos 66

Así que... método realmente cutre: tenedor adb ... como por ejemplo, ejecutarlo en el shell local en segundo plano, utilizando & . Esto es muy feo y depende en cierta medida de que cada instancia se ejecute con una sincronización consistente (y probablemente no sea demasiado amable con el dispositivo Android, pidiéndole que ponga en marcha todos esos procesos Java), pero funciona.

Ejemplo:

tap() { adb shell input tap "$@" & sleep 0.02 }
tap 500 500
tap 600 600
tap 700 700

...enviará eventos de toque a (500, 500), (600, 600) y (700, 700) en una sucesión bastante rápida.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X