1 votos

¿Cómo puedo ejecutar un comando de reinicio de un Tasker sólo una vez?

Estoy trabajando con una tablet china que necesita ser inicializada cada vez que se conecta a una fuente de energía.

Estoy usando Tasker para hacerlo. El problema es: esta condición hace que el encargado ejecute la reboot una y otra vez, y se convierte en un bootloop .

¿Qué debo hacer para inicializar la tablet cuando se conecta una fuente de energía, pero evitar que entre en la bootloop ?

Editar: 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 Puntos 161

Si entendí bien la pregunta, quiere conectar el dispositivo a una fuente de energía que dispare Tasker para reiniciar el dispositivo (para la inicialización). Pero cuando el dispositivo se reinicia a sí mismo Tasker encuentra que la fuente de energía está conectada, así que repite la tarea de nuevo. Su objetivo es hacer Tasker reiniciar sólo una vez mientras la fuente de energía permanece conectada. Si la fuente debe ser removida y reiniciada de nuevo, entonces Tasker debería hacer el reinicio de nuevo sólo por una vez.


Basándome en este entendimiento, propuse la siguiente solución:

La solución es muy trivial. Estoy usando dos perfiles en Tasker es decir..:

  1. No hay energía USB
  2. USB de alimentación

Estos dos perfiles, como es obvio, se activarán conectando/desconectando la fuente de energía al dispositivo Android. Estoy usando el contenido de un archivo como condición aquí para restringir el boot-loop.

Nota: Para esta respuesta, elegí mi fuente de alimentación sólo como USB.

Instrucciones :

En cuanto al contenido del archivo:

  1. Crea un archivo vacío en tu almacenamiento predeterminado. (He creado un archivo llamado sdcard.txt en /sdcard . La ubicación de este archivo es /sdcard/sdcard.txt .)
  2. Abre este archivo en un editor de texto en Android y añade 0 en ella. (Utilicé 920 Editor de texto ).
  3. Nótese que no hay un razonamiento lógico en el uso de 0 sólo. Se usará sólo en una declaración condicional. Tiene la libertad de probar otro número.

En cuanto a los perfiles y tareas en Tasker app:

  1. Lanzamiento Tasker .
  2. Bajo Perfiles crear una pestaña Perfil al dar golpecitos +Estado → Poder → Poder .
  3. Bajo Fuente elige USB .
  4. Revisa Invertir -- esto hará que No hay energía USB perfil.
  5. Presione la tecla/botón de retroceso una vez y seleccione Nueva tarea .
  6. Añade un nombre para tu tarea (persistente) o déjalo en blanco (borrar el perfil también lo borrará).
  7. Bajo Tareas toque de tabulador +ArchivoEscriba el archivo .
  8. Bajo Archivo mencionan la ubicación de su archivo de texto. En este caso, es /sdcard/sdcard.txt .
  9. Escriba 0 bajo Texto campo.
  10. Desmarque Apéndices y Añadir una nueva línea . -- queremos reemplazar el contenido, así que no se debe agregar nada.
  11. Pulse la tecla/botón Atrás dos veces para guardar esta tarea.
  12. Con el fin de crear USB de alimentación perfil, repita los pasos 2, 3, 5 y 6, respectivamente.
  13. Bajo Tareas toque de tabulador +ArchivoLea el archivo .
  14. Repita el paso 8.
  15. Bajo A Var escriba %True -- Puedes cambiar %True a cualquier otro nombre. Asegúrate de poner en mayúsculas al menos una letra de tu variable para que no sea local. Ver este para saber más.
  16. Repita los pasos 11, 7 y 8.
  17. Escriba 1 bajo Texto campo.
  18. Repita el paso 10.
  19. Pulse + correspondiente a Si . Añade %True y 0 en los campos respectivamente. Debería verse como %True ~ 0 .
  20. Repita el paso 11.
  21. Bajo Tareas toque de tabulador +CódigoCorre la Shell .
  22. Escriba reboot bajo Comando . (Mi dispositivo está rooteado, así que le di permisos de root a este paso para evitar cualquier molestia.) Como una opción de arranque suave, puedes usar killall zygote en lugar de reboot .
  23. Revisa Usar root si su dispositivo está rooteado.
  24. Deje Almacenar la salida en y Almacenar los errores en en blanco.
  25. Repita los pasos 19 y 20.
  26. Ve a Perfiles y habilitar ambos perfiles. Para ahorrarse problemas innecesarios, deshabilite cualquier otro perfil relacionado con el poder que no sea el mencionado anteriormente.
  27. Tasker debe ser Habilitado . Puedes comprobarlo pulsando la tecla/botón del menú una vez y entre las opciones, Deshabilitar la tarea sería visible. Además, si esta aplicación se está ejecutando y por casualidad la minimizas, entonces, como ajuste predeterminado, verías su icono en la barra de estado con el perfil mencionado allí (si está activado).

Estamos listos para irnos.

  • Vaya a la pantalla de inicio de su dispositivo.
  • Conectar la fuente de alimentación (aquí sólo usamos USB).
  • Su dispositivo se reiniciará. No desconecte la fuente de energía para verificar que el bucle de arranque se ha desvanecido.
  • Cuando el dispositivo vuelve a la pantalla de inicio después de reiniciar, puedes ver que USB de alimentación perfil se activa en tasker pero no hay boot-loop, sin mencionar que su inicialización también se hace. :)
  • Desconecte la fuente de energía y el perfil cambiará a No hay energía USB .
  • Conecta la fuente de energía de nuevo y el dispositivo se reiniciará de nuevo por una vez.

Estado: Objetivo completado . ¡Hecho!

0 votos

Está cambiando entre ambos perfiles, pero no ejecuta la tarea "reboot" de RunShell

0 votos

@Tardo he rastreado este problema. Si desmarco root en esta tarea, entonces el dispositivo no se reinicia. Adivina qué, no hay error en los registros de Tasker también. He comprobado la opción Root y ha funcionado bien. Tengo la sensación de que tu dispositivo no está rooteado.

0 votos

Estoy usando SuperSU de Chainfire para rootear el dispositivo

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X