1 votes

Comment puis-je exécuter une commande de redémarrage de Tasker une seule fois ?

Je travaille avec une tablette chinoise qui doit être initialisée à chaque fois qu'elle est connectée à une source d'alimentation.

J'utilise Tasker pour le faire. Le problème est le suivant : cette condition fait que le tasker exécute la fonction reboot encore et encore, et cela devient une boucle de démarrage .

Que dois-je faire pour initialiser la tablette lorsqu'une source d'alimentation est connectée, tout en évitant qu'elle n'entre dans le mode de fonctionnement de l'ordinateur ? boucle de démarrage ?

Modifier : TaskerProfile

<TaskerData sr="" dvi="1" tv="4.6u3">
<Profile sr="prof2" ve="2">
<cdate>1431370575080</cdate>
<edate>1431372456863</edate>
<id>2</id>
<mid0>4</mid0>
<State sr="con0" ve="2">
<code>10</code>
<pin>true</pin>
<Int sr="arg0" val="1"/>
</State>
</Profile>
<Profile sr="prof5" ve="2">
<cdate>1431370730220</cdate>
<edate>1431371684461</edate>
<flags>2</flags>
<id>5</id>
<mid0>6</mid0>
<State sr="con0" ve="2">
<code>10</code>
<Int sr="arg0" val="1"/>
</State>
</Profile>
<Project sr="proj0" ve="2">
<cdate>1431027887676</cdate>
<mdate>1431371133517</mdate>
<name>Base</name>
<pids>2,5</pids>
<tids>4,6,7</tids>
<Img sr="icon" ve="2">
<nme>hl_aaa_ext_home</nme>
</Img>
</Project>
<Task sr="task4">
<cdate>1431370589904</cdate>
<edate>1431372085383</edate>
<id>4</id>
<nme>Task1</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>410</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">0</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
</Task>
<Task sr="task6">
<cdate>1431370741046</cdate>
<edate>1431372415674</edate>
<id>6</id>
<nme>Task2</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>417</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">%True</Str>
</Action>
<Action sr="act1" ve="7">
<code>410</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">1</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%True</lhs>
<op>2</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
<Task sr="task7">
<cdate>1431371028431</cdate>
<edate>1431372348654</edate>
<id>7</id>
<nme>runshell</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>123</code>
<Str sr="arg0" ve="3">reboot</Str>
<Int sr="arg1" val="0"/>
<Int sr="arg2" val="1"/>
<Str sr="arg3" ve="3"/>
<Str sr="arg4" ve="3"/>
<Str sr="arg5" ve="3"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%True</lhs>
<op>2</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
</TaskerData>

2voto

Firelord Points 23064

Si j'ai bien compris la question, vous voulez connecter l'appareil à une source d'alimentation qui déclenche Tasker pour redémarrer le dispositif (pour l'initialisation). Mais quand l'appareil redémarre lui-même Tasker constate que la source d'alimentation est connectée, il répète donc la tâche à nouveau. Votre objectif est de faire Tasker ne redémarre qu'une fois alors que la source d'alimentation reste connectée. Si la source doit être retirée et réinsérée à nouveau, alors Tasker devrait faire le redémarrage seulement pour une fois.


Sur la base de cette compréhension, j'ai proposé la solution suivante :

La solution est très triviale. J'utilise deux profils dans Tasker à savoir :

  1. Pas d'alimentation USB
  2. Alimentation USB

Ces deux profils, comme il est évident, seront déclenchés par la connexion/déconnexion de la source d'alimentation de l'appareil Android. J'utilise ici le contenu d'un fichier comme condition pour limiter la boucle de démarrage.

Note : Pour cette réponse, j'ai choisi une source d'alimentation uniquement USB.

Instructions :

En ce qui concerne le contenu du fichier :

  1. Créez un fichier vide dans votre stockage par défaut. (J'ai créé un fichier nommé sdcard.txt en /sdcard . L'emplacement de ce fichier est /sdcard/sdcard.txt .)
  2. Ouvrir ce fichier dans un éditeur de texte sous Android et ajouter 0 en elle. (J'ai utilisé 920 Éditeur de texte ).
  3. Notez qu'il n'y a aucun raisonnement logique dans l'utilisation de 0 seulement. Il ne sera utilisé que dans une déclaration conditionnelle. Vous êtes libre d'essayer un autre numéro.

Concernant les profils et les tâches dans Tasker app :

  1. Lancement Tasker .
  2. Sous Profils créer un Profil en tapant +État → Puissance → Puissance .
  3. Sous Source : choisissez USB .
  4. Consulte Inverser -- cela fera Pas d'alimentation USB profil.
  5. Appuyez une fois sur la touche ou le bouton Back et sélectionnez Nouvelle tâche .
  6. Ajoutez un nom à votre tâche (persistant) ou laissez-le vide (la suppression du profil le supprimera également).
  7. Sous Tâches tabulateur +FichierFichier d'écriture .
  8. Sous Fichier champ mentionne l'emplacement de votre fichier texte. Dans ce cas, il s'agit de /sdcard/sdcard.txt .
  9. Écrire à 0 sous Texte champ.
  10. Décochez Ajouter et Ajouter une nouvelle ligne . -- nous voulons remplacer le contenu, donc aucun ajout ne doit être fait.
  11. Appuyez deux fois sur la touche/bouton Retour pour enregistrer cette tâche.
  12. Afin de créer Alimentation USB répétez les étapes 2, 3, 5 et 6, respectivement.
  13. Sous Tâches tabulateur +FichierLire le dossier .
  14. Répétez l'étape 8.
  15. Sous Au Var type %True -- Vous pouvez changer %True à tout autre nom. Veillez à mettre en majuscule au moins une lettre de votre variable pour la rendre non locale. Voir diese pour en savoir plus.
  16. Répétez les étapes 11, 7 et 8.
  17. Type 1 sous Texte champ.
  18. Répétez l'étape 10.
  19. Tapez + correspondant à Si . Ajouter %True y 0 dans les champs respectivement. Cela devrait ressembler à %True ~ 0 .
  20. Répétez l'étape 11.
  21. Sous Tâches tabulateur +CodeRun Shell .
  22. Type reboot sous Commande . (Mon appareil est rooté, j'ai donc fourni les autorisations Root à cette étape pour éviter tout tracas). Comme option de redémarrage en douceur, vous pouvez utiliser killall zygote au lieu de reboot .
  23. Consulte Utiliser la racine si votre appareil est enraciné.
  24. Laissez Stocker la sortie dans y Stocker les erreurs dans blanc.
  25. Répétez les étapes 19 et 20.
  26. Aller à Profils et activer les deux profils. Pour vous éviter des ennuis inutiles, désactivez tout autre profil lié à l'alimentation autre que ceux mentionnés ci-dessus.
  27. Tasker doit être Activé . Vous pouvez vérifier cela en appuyant une fois sur la touche/bouton Menu et parmi les options, Désactiver le tasker serait visible. En outre, si cette application est en cours d'exécution et que vous la réduisez, son icône s'affiche par défaut dans la barre d'état, avec le profil mentionné (s'il est activé).

Nous sommes prêts à partir.

  • Allez sur l'écran d'accueil de votre appareil.
  • Connectez la source d'alimentation (nous avons utilisé l'USB seulement ici).
  • Votre appareil va redémarrer. Ne débranchez pas la source d'alimentation pour vérifier que la boucle de démarrage a disparu.
  • Lorsque l'appareil revient à l'écran d'accueil après le redémarrage, vous pouvez voir que Alimentation USB le profil est activé dans tasker pourtant il n'y a pas de boot-loop, sans compter que votre initialisation est aussi faite :)
  • Déconnectez la source d'alimentation et le profil basculera sur Pas d'alimentation USB .
  • Connectez à nouveau la source d'alimentation et l'appareil redémarrera pour une fois.

Statut : Objectif atteint . C'est fait !

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