¿Es posible simular el tacto sin root?

¿Hay alguna forma de simular un toque (en cualquier lugar) en la pantalla sin root?

Si no, ¿hay alguna otra forma en que pueda realizar una acción de 'selección' de cartón sin soporte magnético o abriendo mi cartón cada vez?

Fondo

Estoy tratando de hacer que las aplicaciones de cartón funcionen con un teléfono 5.1 que no admite el "botón" magnético.

La mayoría de las aplicaciones parecen usar el botón para seleccionar o avanzar, por lo que si no funciona, es difícil de usar. Descubrí que un toque en cualquier parte de la pantalla también funciona como una selección, por lo que lo que estoy haciendo en este momento es abrir la parte posterior, tocar la pantalla y luego volver a cerrarla, pero obviamente eso rápidamente se vuelve tedioso.

Lo que he probado:

El envío de eventos táctiles requiere permisos de raíz/sistema, por lo que, como cualquier otro cartón, debe tener un imán real para que la pantalla lo detecte como una entrada. Puede valer la pena considerar el uso de un mouse (Bluetooth o USB).
Puede usar un cable OTG y un mouse, siempre que su dispositivo admita OTG.
Entonces díganme chicos, ¿cómo hace Teamviewer eso? Hay una versión disponible de TeamViewer que permite controlar el dispositivo Android de forma remota tal como se hace con la PC. Entonces, ¿cómo simula la televisión los eventos?
puede lograr esto usando el complemento tasker y touchtask sin root. Tasker es una aplicación de Android muy poderosa que debe tener si realmente le gusta automatizar su teléfono. Es una aplicación paga, pero el dinero gastado valdrá la pena.

Respuestas (3)

Potencialmente, puede simular un toque con el comando input tap x y(por ejemplo, desde un emulador de terminal, o posiblemente con Tasker (no recuerdo si puede hacer comandos de shell, pero supongo que sí)), o sobre ADB con adb shell input tap x y. Consulte https://stackoverflow.com/a/20830258/2141741 (y si desea conectar el dispositivo a sí mismo a través de ADB, https://code.google.com/p/android/issues/detail?id=48126 y los comentarios asociados son informativos).

Esta solución no requiere root (al menos no hacerlo desde una computadora conectada a través de ADB).

Esta ha sido la forma más sencilla que he encontrado. Poner el comando en un bucle esperando que se presione una tecla funciona muy bien: $ while true; do read; adb shell input tap 0 0; echo pressed; done. Aunque tiene mucho lag.

Intenté lo que propuso @ user43185 , pero no funcionó. Pero, como alternativa, veo que es posible usar lo siguiente.

input [text|keyevent]
input text <string>
input keyevent <event_code>
input motionevent <x> <y> <down|move|up>
input motionevent-batch <pointer-log>

Por ejemplo, si quiero un evento de toque, entonces hago:

adb shell input motionevent x y down
adb shell input motionevent x y up

Donde x e y son las coordenadas en el dispositivo.


ACTUALIZAR.

La razón por la que la otra respuesta no funcionará, según esta respuesta , es por la versión de Android en el dispositivo.

Supongo que depende de la versión de ADB. Además de esos, veo , tapy en ADB versión 1.0.36. swipepressroll
Investigué, aparentemente se debe a la versión de Android que está en el dispositivo.

Lo hice en Android 6.0 con la aplicación Automate . Puede descargar el flujo automático aquí . Cada vez que hace clic en el botón del auricular, se ejecuta el comando de shell "input tap 200 200".

esto solo funcionó en la aplicación de automatización para mí (Android 9), pero la automatización ahora tiene una acción de "interactuar con un clic táctil", que funciona globalmente. y luego tuve que cambiar el gatillo a "gancho de auriculares con tecla presionada" porque el otro solo funcionaba cuando la aplicación no tenía audio en ejecución...