9 votes

Envoyer une notification (ou juste un vibreur) au téléphone via ADB/shell

Je voudrais être en mesure d'envoyer une sorte de notification à mon Android en utilisant un script shell à distance (SimpleSSHD exécuté en tant que Root, donc fondamentalement le même qu'un shell adb).

Sur un appareil iOS, je peux utiliser les commandes suivantes cvibrate pour faire vibrer l'appareil et sbalert pour afficher une notification via SSH. Je voudrais faire la même chose, mais sur Android.

Ce serait génial si cela pouvait être une notification réelle comme n'importe quelle autre application, mais un moyen de la faire vibrer suffirait aussi si les deux ne sont pas possibles sur Android.

Cela semble être une tâche très simple, mais je n'ai pas été en mesure de trouver une solution...

2 votes

Pour Termux, il y a le Termux-vibrate et le Termux-notification paquet. Je ne sais pas comment rendre ces appels disponibles dans un sshd autonome. Également pertinent : Android.stackexchange.com/questions/207411

0 votes

@Robert En regardant le code source de NotificationAPI.java y VibrateAPI.java - Il s'agit d'une solution basée sur une application (que j'aimerais éviter) qui ne fonctionne qu'avec Termux, en utilisant l'application Termux API une application pour contrôler les notifications, les vibrations, etc.

0 votes

@Robert - CEPENDANT : j'ai essayé echo 200 > /sys/class/timed_output/vibrator/enable à partir des commentaires du Q que vous avez lié : Et ça a marché ! J'aimerais garder la question ouverte parce que je préférerais des notifications ou une sorte d'alerte/pop-up sur l'écran aussi, mais si rien d'autre n'est possible sans l'application Termux + API, ce serait une réponse suffisante pour moi. (Note pour les autres : Cette commande nécessite Root (au moins sur SSH), ce qui pour moi n'est pas un problème cependant).

9voto

maxmopp Points 51

Utilisez la notification cmd :

cmd notification post [flags] <tag> <text>

Si vous êtes Root, la notification ne sera pas affichée :

su -lp 2000 -c "cmd notification post -S bigtext -t 'Title' 'Tag' 'Multiline text'"

1 votes

Joli. J'ai pu poster une notification avec Root. Mais elle est toujours affichée comme étant postée depuis Shell. Android 10 sur un OnePlus 6 utilisant Termux.

0 votes

Ce qui est encore plus ennuyeux pour moi : Je n'ai trouvé aucun moyen d'envoyer sans déclencher le son de la notification.

2 votes

Sur quelles versions d'Android cela fonctionne-t-il/devrait-il fonctionner ?

6voto

Firelord Points 23064

Vous pouvez configurer une tâche dans Tasker que vous pouvez invoquer à partir de la ligne de commande. La tâche peut être configurée en combinant des actions de votre choix, telles que l'affichage d'une notification et l'envoi d'un message d'alerte. vibrer avec un motif XYZ . Lorsque vous configurez une tâche dans Tasker, configurez l'action comme suit : Alerte → Notification

Remplissez les champs comme vous le souhaitez. Assurez-vous d'activer Autoriser l'accès externe sous Préférences → Divers, accessible depuis la ligne à trois points sur le bord droit de la barre supérieure de l'écran d'accueil de Tasker.

Quant à l'invocation de la tâche à partir de la ligne de commande, exécutez :

su -c am broadcast -a net.dinglisch.android.tasker.ACTION_TASK --es "task_name" "YOUR_TASK"

Remplacez YOUR_TASK par le nom de votre tâche.

Conseil : vous pouvez configurer Tasker pour qu'il affiche le texte de votre choix dans votre notification en utilisant un peu plus d'astuces. Configurez une tâche pour surveiller les modifications d'un fichier et assignez une action pour changer la valeur d'une variable de Tasker au contenu de ce fichier. Dans votre tâche de vibration/notification susmentionnée, lorsque vous remplissez le champ "texte", attribuez cette variable locale à la place. Ainsi, la prochaine fois, lorsque vous invoquerez la tâche, modifiez le contenu du fichier pour une notification textuelle personnalisée avant d'envoyer cette commande.

Tip2 : il est également possible d'envoyer une variable directement à une tâche en utilisant la ligne de commande, mais je n'ai pas beaucoup d'expérience avec cela, donc vous devez demander à l'oncle web.

0 votes

Merci pour la réponse, +1 surtout pour les conseils. Je préférerais de loin une solution qui ne nécessite pas d'application externe. Il semble que ce ne soit pas possible, mais je vais probablement opter pour notify4scripts car il semble plus léger et plus facile à personnaliser.

1 votes

@confetti chaque notification est envoyée par une application, il n'y a donc pas de moyen de la créer autrement. Les applications système ne fournissent pas de méthode pour envoyer des notifications à partir de la ligne de commande, donc une application tierce est nécessaire. J'ai essayé une fois de créer quelques surfaces/fenêtres en traitant directement avec SurfaceFlinger, mais par manque de connaissances, je n'ai pas pu trouver comment procéder. Je ne pense pas que la création de notifications en mode natif sans impliquer le framework Java d'Android soit une solution réalisable (si tant est qu'elle soit possible). Il y a un méli-mélo d'APIs et d'IPCs, à un niveau inférieur de source fermée aussi.

0 votes

@IrfanLatif Merci pour votre contribution. Je pense que je vais m'en tenir à la solution du vibreur seul, car c'est la plus simple et la plus suffisante pour mon système d'alerte. Peut-être voulez-vous ajouter cela à votre réponse pour que je puisse l'accepter ? Je suis sûr que la solution basée sur l'application sera également utile à d'autres personnes.

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