5 votes

Une alternative plus rapide à `input` ?

J'essaie d'automatiser une tâche sur mon téléphone Android (non rooté).

Bien que je l'ai fait "fonctionner" en utilisant input mais il est assez lent car il prend ~0.7s par événement. (En fait, j'ai juste besoin d'envoyer une série d'événements de tap, donc ce que j'ai maintenant est une séquence de adb shell input tap $x $y .)

J'ai essayé sendevent mais cela me donne "permission denied". (Je ne suis pas sûr de la raison ; le périphérique est censé être accessible en écriture par l'utilisateur. input dont l'utilisateur du shell est membre... et évidemment, le groupe input peut envoyer des événements).

Y a-t-il un truc pour obtenir sendevent pour travailler ? Ou un moyen d'envoyer plusieurs commandes en une seule invocation de input ?

Je préférerais des solutions qui ne nécessitent pas l'installation de logiciels tiers...

2voto

Matthew Points 171

Donc... méthode vraiment merdique : fourchette adb ... comme dans, l'exécuter sur le shell local en arrière-plan, en utilisant & . C'est très compliqué et dépend quelque peu de l'exécution de chaque instance avec un timing cohérent (et probablement pas très poli envers l'appareil Android, lui demandant de lancer tous ces processus Java), mais cela fonctionne.

Exemple :

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

...enverra des événements de tapotement à (500, 500), (600, 600) et (700, 700) dans une succession assez rapide.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X