web-dev-qa-db-fra.com

Commandes Adb Shell pour modifier les paramètres ou effectuer des tâches sur un téléphone

Comment utiliser adb pour effectuer certaines tâches automatisées sur mon téléphone Android? Je dois trouver des commandes que je peux émettre depuis la ligne de commande (idéalement, à l'aide d'un fichier .bat), capables de faire plus que simplement ouvrir une application ou envoyer un événement de frappe (pression du bouton). 

Par exemple, je souhaite activer ou désactiver le mode avion à partir de la ligne de commande. Actuellement, le mieux que je puisse faire est de lancer le menu des paramètres de réseau et sans fil, puis d'utiliser l'entrée keyevents pour cliquer sur le mode avion:

adb Shell am start -a Android.settings.AIRPLANE_MODE_SETTINGS
adb Shell input keyevent 19 & adb Shell input keyevent 23

Cette méthode présente quelques inconvénients, notamment le fait que l’écran doit être allumé et déverrouillé. De plus, les tâches que je veux accomplir sont beaucoup plus vastes que ce simple exemple. Autres choses que j'aimerais faire si possible:

1.Play un mp3 et le mettre sur la répétition. Solution actuelle:

adb Shell am start -n com.Android.music/.MusicBrowserActivity
adb Shell input keyevent 84
adb Shell input keyevent 56 & adb Shell input keyevent 66 & adb Shell input keyevent 67 & adb Shell input keyevent 19
adb Shell input keyevent 23 & adb Shell input keyevent 21
adb Shell input keyevent 19 & adb Shell input keyevent 19 & adb Shell input keyevent 19 & adb Shell input keyevent 22 & adb Shell input keyevent 22 & adb Shell input keyevent 23 & adb Shell input keyevent 23

2.Play une vidéo. (solution actuelle: ouvrir MediaGallery, envoyer des événements clés, comme ci-dessus)

3.Changez le volume (solution actuelle: envoyer les événements du bouton d'augmentation du volume)

4.Changez le délai d’affichage (solution actuelle: ouvrez les paramètres de son et d’affichage, envoyez des événements clés)

Comme auparavant, ils nécessitent tous que l'écran soit allumé et déverrouillé. L’autre inconvénient majeur de l’utilisation de keyevents est que si l’interface utilisateur de l’application est modifiée, les keyevents n’exécutent plus la fonction appropriée. S'il n'y a pas de moyen plus facile de faire ce genre de choses, existe-t-il au moins un moyen d'allumer l'écran (en utilisant adb) quand il est éteint? Ou pour que les événements keyevents fonctionnent toujours lorsque l'écran est éteint?

Je ne suis pas très familier avec Java. Cela dit, j'ai vu le code suivant (source: http://yenliangl.blogspot.com/2009/12/toggle-airplane-mode.html ) pour modifier un paramètre du téléphone:

Settings.System.putInt(Settings.System.AIRPLANE_MODE_ON, 1 /* 1 or 0 */);

Comment traduire quelque chose comme ce qui précède dans une commande adb Shell? Est-ce possible ou la mauvaise façon de penser?

Je peux fournir plus de détails si nécessaire. Merci!

18
Noah

Bien que la question soit ancienne, elle pourrait aider quelqu'un d'autre.

Pour la lecture vidéo, vous pouvez essayer ceci:

adb Shell am start -a Android.intent.action.VIEW -d   "file:///mnt/sdcard/DCIM/Camera/test.3gp" -t "video/*" 

^ vous donne une invite de tous les lecteurs capables pouvant lire ce fichier.

adb Shell am start -a Android.intent.action.VIEW -d "file:///mnt/sdcard/DCIM/Camera/test.3gp" -t "video/*" -n "com.alensw.PicFolder/.PlayerActivity" 

^ joue dans le lecteur spécifié par le commutateur -n.

16
rohitverma

Je travaille sur le même ensemble de problèmes. (J'ai principalement résolu le problème de contexte en appuyant sur un bouton droit en utilisant les touches keyevent HOME, puis MENU, mais, d'une manière ou d'une autre, même si ce n'est pas fiable.) J'enquête actuellement sur SL4A (Scripting Layer for Android), qui a promettre. Il permet à Perl, Python, Lua et d’autres langages de script d’interagir avec l’API Android à partir de votre PC après le démarrage d’un serveur SL4A sur le périphérique, ce qui peut également être effectué à partir du PC. Je trouve que " Android Python avec SL4A " est une excellente ressource; J'aurais économisé des jours d'essais et d'erreurs et de chasse sur le Web si j'avais commencé avec ce livre

3
Bill

L'exemple Java que vous montrez concerne un programme qui s'exécute sur le téléphone lui-même. Vous pourrez peut-être programmer une sorte d’interprète sur le téléphone qui gérera les commandes adb. De cette façon, vous ne dépendez plus des événements clés. Ce n'est pas une entreprise mineure, cependant.

0
Maurits Rijk