¿Cómo puedo ejecutar un comando de reinicio de Tasker solo 1 vez?

Estoy trabajando con una tableta china que debe inicializarse cada vez que se conecta a una fuente de alimentación.

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

¿Qué debo hacer para inicializar la tableta cuando se conecta una fuente de alimentación, pero evitar que ingrese al 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>

Respuestas (1)

Si entendí la pregunta correctamente, desea conectar el dispositivo a una fuente de alimentación que activa Tasker para reiniciar el dispositivo (para la inicialización). Pero cuando el dispositivo se reinicia, Tasker descubre que la fuente de alimentación está conectada, por lo que repite la tarea nuevamente. Su objetivo es hacer que Tasker se reinicie solo una vez mientras la fuente de alimentación permanece conectada. Si la fuente debe eliminarse y volver a insertarse, Tasker debe reiniciar nuevamente solo una vez.


Basado en este entendimiento, propuse la siguiente solución:

La solución es muy trivial. Estoy usando dos perfiles en Tasker , a saber:

  1. No alimenta USB
  2. USB de alimentación

Estos dos perfiles, como es obvio, se activarán al conectar/desconectar la fuente de alimentación del dispositivo Android. Estoy usando el contenido de un archivo como condición aquí para restringir el ciclo de arranque.

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

Instrucciones :

En cuanto al contenido del archivo:

  1. Cree un archivo vacío en su almacenamiento predeterminado. (Creé un archivo llamado sdcard.txt. /sdcardLa ubicación de este archivo es /sdcard/sdcard.txt.)
  2. Abra este archivo en un editor de texto en Android y agréguelo 0. (Utilicé el editor de texto 920 ).
  3. Tenga en cuenta que no hay un razonamiento lógico en usar 0solamente. Se utilizará en una declaración condicional solamente. Tiene la libertad de probar con otro número.

Con respecto a los perfiles y tareas en la aplicación Tasker :

  1. Inicie Tasker .
  2. En la pestaña Perfiles , cree un perfil tocando +Estado → Energía → Energía .
  3. En Fuente , elija USB .
  4. Marque Invertir : esto hará que el perfil USB no sea de alimentación .
  5. Presione la tecla/botón Atrás una vez y seleccione Nueva tarea .
  6. Agregue un nombre para su tarea (persistente) o déjelo en blanco (si elimina el perfil, también lo eliminará).
  7. En la pestaña Tareas , toque +ArchivoEscribir archivo .
  8. En el campo Archivo , mencione la ubicación de su archivo de texto. En este caso, es /sdcard/sdcard.txt.
  9. Escriba 0en el campo Texto .
  10. Desmarque Anexar y Agregar nueva línea . -- queremos reemplazar el contenido, por lo que no se debe agregar nada.
  11. Toque la tecla/botón Atrás dos veces para guardar esta tarea.
  12. Para crear el perfil Power USB , repita los pasos 2, 3, 5 y 6, respectivamente.
  13. En la pestaña Tareas , toque +ArchivoLeer archivo .
  14. Repita el paso 8.
  15. En Para tipo Var%True : puede cambiar %Truea cualquier otro nombre. Asegúrese de poner en mayúscula al menos una letra de su variable para que no sea local. Mira esto para saber más.
  16. Repita los pasos 11, 7 y 8.
  17. Escriba 1en el campo Texto .
  18. Repita el paso 10.
  19. Toque +correspondiente a Si . Agregar %Truey 0en campos respectivamente. Debería verse como %True ~ 0.
  20. Repita el paso 11.
  21. En la pestaña Tareas , toque +CódigoEjecutar Shell .
  22. Escriba rebootbajo Comando . (Mi dispositivo está rooteado, por lo que proporcioné permisos de root para este paso para evitar problemas). Como opción de reinicio suave, puede usar killall zygoteen lugar de reboot.
  23. Marque Use Root si su dispositivo está rooteado.
  24. Deje Almacenar salida en y Almacenar errores en en blanco.
  25. Repita los pasos 19 y 20.
  26. Vaya a Perfiles y habilite ambos perfiles. Para evitar problemas innecesarios, deshabilite cualquier otro perfil relacionado con la energía que no sean los mencionados anteriormente.
  27. Tasker debe estar Habilitado . Puede verificar esto tocando la tecla / botón Menú una vez y entre las opciones, Deshabilitar tasker estará visible. Además, si esta aplicación se está ejecutando y la minimiza, entonces, como configuración predeterminada, verá su ícono 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.
  • Conecte la fuente de alimentación (usamos USB solo aquí).
  • Su dispositivo se reiniciará. No desconecte la fuente de alimentación para verificar que el bucle de arranque desapareció.
  • Cuando el dispositivo vuelve a la pantalla de inicio después del reinicio, puede ver que el perfil Power USB está activado en tasker pero no hay un bucle de arranque, sin mencionar que su inicialización también está completa. :)
  • Desconecte la fuente de alimentación y el perfil cambiará a USB sin alimentación .
  • Vuelva a conectar la fuente de alimentación y el dispositivo se reiniciará nuevamente por una vez.

Estado: Objetivo Completado . ¡Hecho!

Está cambiando entre ambos perfiles, pero no ejecuta la tarea de "reinicio" de RunShell
@Tardo Rastreé este problema. Si desmarco la opción raíz en esta tarea, entonces el dispositivo no se reinicia en absoluto. Adivina qué, tampoco hay errores en los registros de Tasker. Revisé la opción raíz y funcionó bien. Tengo la sensación de que tu dispositivo no está rooteado.
Estoy usando SuperSU de Chainfire para rootear el dispositivo
Si ejecuto (manualmente) la tarea de reinicio, se reiniciará
¿Puede enviarme las capturas de pantalla de todos los perfiles y tareas que realizó con esta respuesta en detalle? IDK cómo exportar y restaurar datos de Tasker.
Editaré la publicación con los Perfiles y Tareas.
Vaya a ActionBar Settings(en la esquina derecha) -> Data-> Share. Luego podrá ingresar a un TextEditor un archivo similar al que acabo de publicar como una edición.
Lo siento, pero no tengo suficiente reputación para usar el chat. :(
No hay problema con el chat, el sistema me preguntó, así que intenté moverlo. De todos modos, intenté ver las cosas en el editor de texto y también tengo otra opción. Si mantiene presionado un perfil, tiene la opción de "Exportarlo". He exportado ambos perfiles y creo que debería poder importarlos. Te envío ahora.
Bien. Por favor revisa el chat nuevamente.