Guia Tasker.pdf

March 24, 2018 | Author: Jorge David Urien Socas | Category: Widget (Gui), Quotation Mark, Computer File, Variable (Computer Science), Internet


Comments



Description

Tasker para principiantesCon autorización expresa del autor, este artículo es una traducción del original : Beguinners guide to Tasker, by Andreas Ødegård ubicado en: http://www.pocketables.com/2013/05/beginners-guide-to-tasker-part-1-5-tasker-basics-new-ui.html Guía "Tasker para principiantes" Esta guía, titulada, "Tasker para principiantes", es el más completo tutorial que se ha hecho sobre esta aplicación. Emplea ejemplos prácticos, pantallazos, y está escrita de una manera muy asequible. Es el mejor complemento a la guía oficial de Tasker. Ha sido originalmente escrita por Andreas Ødegård y publicada en la Web Pocketables ( http://www.pocketables.com ). Desde aquí nuestro agradecimiento a Andreas Ødegård por autorizarnos expresamente publicar esos artículos traducidos. Ya tenemos varios traducidos y publicados en el foro; en esos hilos puedes añadir tus comentarios o dudas respecto a los temas de cada lección concreta. Tasker para principiantes. Lección 1. Conceptos básicos Aquí se tratan los aspectos más rudimentarios de la aplicación y todo lo relacionado con los conceptos básicos. Escrito para la nueva interfaz de Tasker, versión 4. Ya en 2012, escribí una guía para principiantes de Tasker que en la actualidad consta de 7 partes. Sin embargo, con la nueva interfaz de usuario de Tasker, muchas de las referencias, imágenes, y videos de esa guía ahora son difíciles de seguir, ya que es en muchos sentidos una nueva aplicación. Los conceptos básicos se siguen aplicando igual, pero se visualiza y se organiza de manera diferente. Esta primera parte de la guía es la primera parada de muchos nuevos usuarios Tasker y por eso quería publicar una versión actualizada. Este artículo contiene la misma información que el original (en http://www.htcmania.com/showthread.php?p=7529064) , sólo cambia en lo relativo a la nueva interfaz de usuario. La antigua interfaz de usuario sigue siendo utilizada en versiones anteriores de Android, y sigue estando vigente. Por lo tanto, si usted está utilizando Tasker con la nueva interfaz de usuario, lea esto, y si usted está utilizando Tasker con la antigua interfaz de usuario (es decir, una versión de Android inferiores a 4.0), lea la versión original de este artículo. Si no está seguro de la versión que está usando, mire las imágenes de cada artículo para ver cuál coincide con lo que Vd. tiene. ¿Qué es Tasker? Tasker es una aplicación de automatización para Android. El concepto básico con Tasker es "si ocurre esto, hacer aquello", donde hay muchas opciones para esto y para aquello. Un ejemplo de una configuración de Tasker relativamente simple es "si el teléfono se pone boca abajo mientras suena, silenciar el sonido", pero el cielo es el límite para lo que podemos hacer. La sola acción de conectar el teléfono a la corriente alterna durante la noche inicia una compleja serie de acciones que van desde el oscurecimiento de la pantalla hasta apagar mis monitores de PC. Tasker es un shell, no los contenidos Una de las quejas más comunes que veo con Tasker es algo como esto: "Yo compré Tasker para hacer tal cosa, pero no encuentro la manera de hacerla". Esta es una queja típica de alguien que no ha entendido lo que es Tasker. Tasker puede hacer cosas simples, pero puede hacer mil cosas simples diferentes. Es una envoltura prevista para que el usuario pueda agregar contenido. Tasker requiere que el usuario configure lo que hay que hacer desde cero, y el concepto de "cero" es muy diferente de lo que normalmente te encuentras con aplicaciones móviles. No te dan un panel de configuración con el modo de control coche, es necesario realmente crear ese modo coche estableciendo una manera de decirle a Tasker cuando estás en el coche y qué hacer en dicho caso. En pocas palabras, el aprendizaje de Tasker lleva tiempo, y un error de usuario no es un error de la aplicación. Si dedicas tiempo y aprendes, puedes revolucionar la forma de utilizar tu dispositivo. Las acciones, tareas, perfiles, proyectos, contextos, escenas y variables Estos siete términos son importantes para comenzar a entender Tasker. Acciones Una acción es la parte más básica de Tasker, una cosa que la aplicación hace. Desconexión WiFi es una acción, ir a la pantalla de inicio es una acción, bajar el volumen es una acción. Tasker tiene más de 200 acciones básicas, y la mayoría de ellas tienen distintas opciones de configuración que les permiten hacer las cosas de diferentes maneras, como por ejemplo, la acción Control multimedia(del grupo Multimedia) tiene cinco opciones diferentes para el botón que debe emular. El hecho de vincular las acciones en su conjunto te permite hacer cosas realmente increíbles con Tasker, cosas que van mucho más allá de cambiar una configuración o dos al salir de casa. Tareas Las acciones se agrupan en tareas. Una tarea puede tener una o muchas acciones, dependiendo de su objetivo. A modo de ejemplo, mi tarea "fuera de casa" tiene tres acciones: una para ajustar el brillo de la pantalla, otra para avisarme de qué tengo en mi lista de la compra, y otra para actualizar un archivo de estado en línea que dice que no estoy en casa. Las tareas también se pueden activar como acciones, por lo que una tarea puede tener varias acciones que ejecutan tareas individuales, cada una con sus propias acciones. De esta manera usted puede agrupar las acciones en conjunto en tareas más significativas, lo que le permite hacer referencia a un conjunto de acciones de las diferentes tareas. Por ejemplo, tengo una tarea con varias acciones que actualizan un widget, y esta tarea de "actualización widget" se utiliza como parte de otros trabajos en los que la actualización del widget es necesaria, como por ejemplo en mi perfil de reiniciar el sistema. Las tareas pueden ser disparadas tanto por los contextos, como directamente a través de accesos directos, widgets y otros métodos. Los contextos y perfiles Un contexto es un disparador. Una notificación entrante, la apertura de una aplicación, o conectarse a una red WiFi, son tres ejemplos de contextos que se pueden usar para activar una tarea. Si desea que el GPS se encienda cuando salga de la casa, se puede hacer, por ejemplo, que al perder la conexión a su WiFi doméstica, según ese contexto, se desencadene una tarea con una acción que encienda del GPS. A diferencia de las tareas, los contextos no pueden "vivir por su cuenta". Son siempre la primera parte de un perfil y un perfil se compone de hasta cuatro contextos y de una o dos tareas. Un perfil es lo que vincula a las tareas y contextos juntos, decide qué tarea se debe ejecutar cuando el contexto se dispara. Hay dos tipos de contextos: contextos de estado y contextos de evento. Dependiendo del tipo de contexto (de cuando el perfil se activa. por contra. Pero no todos los ajustes se restablecen automáticamente. y eso incluye la posibilidad de revertir algunos ajustes automáticamente cuando el perfil se vuelve inactivo. un contexto 1 y un contexto 2). dado que un contexto de evento. en su mayoría se limitan a la configuración del sistema. cosa que probablmente no ocurrirá nunca. lo que significa que ambos contextos se deben cumplir para que el perfil se active. Estos perfiles no pueden tener tareas de salida ya que no hay diferencia de tiempo entre cuando el perfil se activa y se desactiva (no hay diferencia práctica entre el momento de empezar a recibir un mensaje SMS y terminar de recibirlo). Además. es imposible tener más de un contexto de evento sencillo unido a un perfil. si la tarea de entrada cambia el brillo. no define un estado continuo. por ejemplo. Por defecto existe la tarea de entrada. La tarea de salida se ejecuta cuando el perfil se desactiva. Eso significa que es realmente la tarea de salida solo se puede aplicar a perfiles basados en contextos de estado. como el brillo. Así. Tasker no va a reajustar de nuevo eso hasta que el perfil sea desactivado y reactivado. Puede desactivar esta restauración automática del modo siguiente: haga una presión prolongada sobre el nombre del perfil. en caso de que la tarea de entrada tenga una acción Espera que provoca demoras en parte de la tarea de entrada y el perfil se puede volver inactivo durante ese tiempo. mientras el perfil está activo. resultaría que el perfil solo se activaría en el caso de que los dos contextos se produjeran en el mismo momento exacto. Un perfil que tiene sólo contextos de estado estará activo siempre y cuando el contexto se cumpla. ajustas el brillo de la pantalla mediante la tarea de entrada de un perfil de estado. la relación entre ellos es Y (por ejemplo. la tarea de entrada sólo se ejecutará una vez. La razón es que. En los casos en los que hay múltiples contextos de estado en un mismo perfil. sólo dura un segundo. eso será restaurado a su ajuste previo cuando se desactive el perfil. activando momentáneamente el perfil para provocar una vez la ejecución de la tarea asociada. sin que Vd necesite ordenarlo.estado o de evento). Los contextos de estado permiten dos tipos de tareas: tareas de entrada y tareas de salida. Es importante entender que. lo vuelve a cambiar en la configuración del sistema. sin embargo. la configuración sólo persiste si nada más interfiere con ellos. y es un punto muy importante. un perfil puede estar activo de forma continua o sólo momentáneamente. luego haga clic en el botón de configuración que aparece en la parte superior y. Otra cosa importante a saber sobre los contextos de estado es que algunos ajustes automáticamente se revertirán cuando el perfil sea desactivado. . y la relación entre contextos es Y. a continuación. La recepción de un mensaje SMS es un ejemplo de un contexto de evento. desactive la casilla "Restaurar Ajustes". que se ejecuta cuando se activa el perfil. y sin que el perfil sea consciente de ello. es posible que otras aplicaciones y tareas Tasker puedan cambiar el brillo de la pantalla. ocurrirá automáticamente. Esto es cierto. si el contexto es estar conectado a una red WiFi específica. Por ejemplo. Un contexto de estado hace que un perfil esté activo siempre y cuando el contexto se cumpla. Otra cosa importante a tener en cuenta es que una tarea de salida a veces se puede ejecutar antes de la tarea de entrada del mismo perfil. mientras el perfil sigue activo. Un contexto de evento. por definición. el perfil estará activo durante el tiempo que esté conectado el dispositivo. Con esto quiero decir que si la tarea de entrada cambia el brillo de la pantalla y luego Vd. Esto significa que si. En otras palabras. Tasker no impone nada de lo que esté especificado en la tarea entrada. Actualizado: Rich del Grupo Tasker Google señala que la tarea vinculada a un perfil con contextos de estado sólo se ejecuta una vez. esto causa problemas porque me voy a referir a características que no serían visibles. Piense en ello como una carpeta capaz de contener todo lo anterior. siempre será la fecha actual. La variable %DATE. Puede usar la escena para crear menús. de modo que usted puede mantener todo lo relacionado en un solo lugar. Por ejemplo. cajas de valores. Las variables se utilizan para tener acceso al sistema de transferencia de información entre las partes de Tasker. Más específicamente. también es necesario decir que esto y las versiones futuras de la guía basada en la nueva interfaz de usuario se basa en el diseño de ICS +. Puede agrupar todas esas cosas en un mismo proyecto para mantenerse organizado. También puede tener hasta cuatro contextos de estado en un perfil sin un contexto de evento.Cuando un contexto de evento se utiliza junto con los contextos de estado en el mismo perfil. el perfil se activa momentáneamente cuando ocurra el evento. La pantalla de Tasker Tasker tiene un modo de principiante que está diseñado para hacer la aplicación más fácil de usar para los principiantes. no en modo principiante. que se puede seleccionar en la sección de interfaz de usuario de las preferencias de Tasker. Proyectos Un proyecto es el último grupo en Tasker. o como una variable en matemáticas. voy a estar basando esta guía en la búsqueda de Tasker normal. pero sólo si los contextos de estado se cumplen. Esto se hace en las principales preferencias de Tasker. y escenas. el perfil se convierte en un perfil de evento. podrías tener un perfil con un evento de SMS recibido y un estado WiFi conectado a la red WiFi de tu trabajo. todo funcionando conjuntamente. por lo que si usted le dice a Tasker que haga una notificación con el texto %DATE. Lamentablemente. Esta es una característica muy útil y compleja que explicaré más adelante con mayor detalle. y mucho más. Variables Una variable es como un archivo de texto virtual dentro Tasker. Todas las condiciones de estado se tienen que cumplir para que el perfil permanezca activo. Dado que este artículo es una reescritura de una guía para la versión pre-ICS de Tasker. e incluso trabajar con ajustes y opciones. por lo que recomiendo su desactivación. ventanas emergentes. En esos casos. tareas múltiples. Escenas Una escena es esencialmente una interfaz de usuario personalizada. Por lo tanto. inhabilitando algunas características. como por ejemplo %Variable1. en cuyo caso el perfil es todavía un perfil de estado. Voy a entrar en esto en mucho más detalle más adelante. . por ejemplo. con el fin de automatizar lo que sucede cuando se recibe un mensaje SMS en el trabajo. como he mencionado anteriormente. Una variable está representada por un símbolo % seguido de un nombre. entonces %DATE se sustituye por la fecha real cuando se genere la notificación. el tema que utilizo es el tema Claro. Las configuraciones más complejas de Tasker suelen utilizar varios perfiles. para eliminar elementos hay que agarrarlos en la zona de la derecha de la pantalla y arrastrarlos hacia abajo a la papelera que aparecerá. a su vez introducir tareas en tareas de salida (o viceversa). Algunas características de Tasker. Es la forma de importar y exportar productos. La imagen de arriba podría ayudar a explicar donde está todo. tiene que funcionar todo el tiempo para trabajar. Además. junto con una larga lista de los permisos necesarios de Tasker. vaya a la configuración y desactive la opción Mostrar en la barra de notificaciones. que es una forma rápida de hacer un seguimiento del estado de los perfiles. Esto es debido a que Tasker. abra Tasker y. hay que otorgar ese acceso de forma manual en los ajustes del sistema principal del dispositivo. pero vale la pena mencionar que mantener la pulsación o solo un toque en las partes de la interfaz de usuario es la manera de acceder a una gran cantidad de características.Conocer la diferencia entre los diversos términos que he explicado anteriormente es la mitad de la batalla cuando se trata de entender cómo funciona la interfaz de usuario. y así sucesivamente. requieren que Tasker tenga acceso a nivel de sistema. haga una pulsación larga en su nombre. ¿Qué requiere Tasker para trabajar? Cuando Tasker está activo. específicamente la capacidad de leer las notificaciones de otras aplicaciones. Esto. habrá un icono de notificación presente en tu barra de notificaciones. sección accesibilidad. Para evitar que el estado de un perfil sea mostrado así. añadir más contextos a un perfil. Esta notificación también muestra qué perfiles se encuentran activos. pero cada permiso Tasker necesita está ahí por una razón muy . Esto sirve también para ordenar los elementos y transferirlos a otros proyectos: arrastrar y soltar. obviamente. cambiar de tareas. puede sonar aterrador. buena, y no es nada perverso. Tasker también requiere privilegios de administrador de dispositivos para ciertas funciones, como manipular el estado del código de bloqueo. Esto también debe ser activado de forma manual, y si se activa, también tendrá que desactivarse manualmente para desinstalar Tasker. Puede leer más sobre estos detalles aquí (enlace a página en inglés, The difference between “uninstall” and “deactivate” on Android http://www.pocketables.com/2012/07/t...n-android.html ) Hay docenas de plug-ins de Tasker, que aportan un montón de nuevas capacidades. Estos plug-ins están disponibles en la tienda Play, y se instalan como aplicaciones normales. Además, algunas aplicaciones incorporan compatibilidad con Tasker. No es necesario ser Root para Tasker, pero sí le da más posibilidades. La disponibilidad de determinadas acciones y contextos depende del dispositivo y la versión de software / ROM, y ser Root puede desbloquear características en un dispositivo determinado. Tasker también se puede utilizar para matar aplicaciones, manipular archivos, y otros. Creación de nuestro primer perfil La mejor manera de aprender Tasker es juguetear con ella y explorar. Las configuraciones de cada contexto y de cada acción son diferentes, por lo que es difícil generalizar. En la imagen siguiente se explican algunos de los botones y opciones que son bastante comunes en la pantalla de configuración de las acciones. Cada acción y contexto tienen diferentes opciones, y con la cantidad de contextos y acciones en Tasker, explicarlos todos y cada uno es una tarea enorme. Sin embargo, existe documentación para más o menos todas las funciones y ajustes de Tasker. Se puede acceder a esta documentación al hacer clic en el signo de interrogación presente en la parte superior derecha en las pantallas de acciones de Tasker, aunque algunas veces sea una explicación breve. Debo enfatizar lo importante del estudio de cada uno para el uso de Tasker. Este artículo y otros muchos que he escrito y los artículos de otras personas que puedes encontrar Internet son un recurso excelente, pero al fin y al cabo, usted es la única persona que sabe lo que necesita de Tasker . ¿Vale la pena el esfuerzo? Porsupuesto. Después de este artículo, ¿por dónde seguir? En el siguiente enlace puedes ver otras partes de este tutorial. http://www.htcmania.com/showthread.php?p=8821039 Hasta ahora, sólo la primera parte está disponible en una versión para la nueva interfaz de usuario, pero te aconsejo jugar con las características básicas de Tasker antes de seguir leyendo. Si bien hay algunos cambios notables en la interfaz de usuario en la nueva versión, Tasker no ha cambiado, por lo que la máxima prioridad de cualquier nuevo usuario Tasker debe entender los conceptos básicos, con el fin de ser capaz de entender la información escrita para la antigua interfaz de usuario. El siguiente vídeo muestra la creación de un perfil con un contexto simple de estado, con una tarea de entrada y (más tarde) una tarea de salida. Mi consejo es jugar un poco con los diferentes contextos y acciones, y ver qué pasa. http://www.youtube.com/watch?v=5GNXTmZIHFQ http://www.youtube.com/watch?v=3-Zag6YnTOc#! Tasker para principiantes. Lección 2. Variables. -Por Lukevalci-, dedicada a las variables ( o sea que básico e imprescindible). • Convertir el contenido de un archivo de texto real en el valor de una variable. el programa sustituirá la variable por el valor (contenido) que la misma tenga en el momento de ejecutarse. lo primero que tienes que saber son las diferentes maneras en que usted puede cambiar el valor (contenido) de una variable. A continuación. Para entender completamente el propósito de la utilización de variables. El nombre que sigue al símbolo de porcentaje es en cierto modo el nombre del archivo. El valor de la variable se incrementaría en valor numérico las veces que se ejecute la acción. y mencioné que profundizaría en variables y en las escenas más adelante. El símbolo de porcentaje siempre está presente al comienzo del nombre de una variable y es la forma en que Tasker sepa que algo es una variable (Igual que la extensión del archivo txt permite que los equipos sepan que es un archivo de texto). en lugar de tener la información almacenada como texto estático que sólo es utilizable donde está escrito. puede moverse. actuando como un contador • Muchos ajustes del sistema y eventos existen en Tasker en forma variable. Ambas son características que requieren un poco más de explicación que los otros aspectos en general. Sin embargo. ¿Qué es una variable? Las variables son parte de muchos lenguajes de programación. Imagina un archivo de texto llamado variable. Digamos que tienes una variable %hola que contiene "Hola Mundo". las variables. sino también controlar los ajustes y el texto de Tasker de forma remota. en muchos sentidos. así que me voy a dedicar un artículo a cada uno de estos temas. Una variable es esencialmente un archivo de texto virtual. Esto permite no sólo la transferencia de información entre las diferentes partes de Tasker.txt que contiene el texto "Hola Mundo". Cuando Tasker vaya a crear la notificación. Así la notificación final creada por Tasker no leerá "%hola". hay muchas maneras de cambiar el valor de una variable. haz que Tasker cree una notificación con el texto %hola. un número.En la primera parte de esta guía traté los aspectos básicos de Tasker. y Tasker es. • Operar matemáticamente las variables. un lenguaje de programación. Este texto puede ser un único símbolo. las variables comparten un montón de ventajas con internet: • La información se puede compartir fácilmente entre los participantes conectados . De hecho. ¿Por qué utilizar variables? El propósito de las variables es tener una manera de almacenar información de forma dinámica. no imágenes. y en vez de ser llamado variable. en lugar de que sea un archivo físico. El primero. una URL. un párrafo de un artículo (cualquier texto. sin tener que entrar en cada contexto/tarea y modificarla manualmente. pero únicamente el texto. Al igual que un archivo de texto una variable puede contener texto. puedes sumar +1 a una variable cada vez que se ejecuta una acción. %DATE es siempre la fecha. La Lista completa de las llamadas variables incorporadas se encuentran en la ayuda de Tasker. en otras palabras). El valor de la variable %TIME es siempre la hora actual. y saber cómo utilizarlas es una de las lecciones más importantes de Tasker. Algunos ejemplos son: • Establecer el valor de una variable mediante una acción. Las matemáticas también utilizan variables y en muchos casos funcionan de la misma manera. En cambio el mensaje será "Hola Mundo". Cuando se utiliza una variable en cualquier lugar de Tasker. En resumen. Por ejemplo. %BATT es siempre el nivel de la batería y así sucesivamente. se comprobará el valor de la variable y lo usará en lugar de utilizar el nombre de la variable. Este valor puede ser utilizado como un contexto para un perfil completamente diferente o como parte de otras acciones.txt se llama %variable. La idea es crear una biblioteca de información a las que las diferentes partes de Tasker tengan acceso. existe dentro de Tasker. • Las variables globales se muestran en la pestaña Variables y estarán visibles y utilizables por todas las partes del Tasker. Creación de variables Los nombres de las variables en realidad cambian (e indican) qué tipo de variable es. En lugar de ser una creación de texto estático. contextos. • Las variables locales se escriben en minúsculas y sólo están disponibles para el perfil/tarea que las crea. El Pronóstico del tiempo para hoy es . • Las variables incorporadas siempre se escriben en mayúsculas. Un ejemplo es %new_val. todo en minúscula). Estas son las variables que hablé anteriormente que están integrados en Tasker y que toman los valores de información del sistema. al igual que un usuario de Internet envía un email a otro. locales e incorporada. ya que. Excepciones No hay reglas sin excepciones. modificarla y usarla. Si su tarea "casa" crea una variable %Casa (primera con mayúscula). Para utilizar el símil de internet de arriba. Cuando me despierto por la mañana uso una acción Tasker que se llama “Decir” (que se encuentra en la categoría Misc). %TIME. Además. La única manera de cambiar %BATT es cambiar el nivel de la batería actual mediante la carga o descarga de la batería. que lo veremos al hablar de la creación en escena. Si tiene una tarea de "Casa" que crea una variable %casa (ojo. Hay tres tipos de variables: globales. Esta acción tiene un campo de texto en el que yo escribo el texto que quiero decir y entonces el teléfono lee el mensaje en voz alta. sin embargo ni las variables locales ni las incorporadas se muestran en esta pestaña. Hay algunas variables que toman la forma de variables locales pero en realidad son variables incorporadas. El concepto de texto dinámico es como la colaboración de documentos en Google Docs u otros editores de documentos en línea. Ejemplo 1: Mi mensaje de la mañana Tengo una elaborada configuración de “modo de reposo” que uso todas las noches. y así sucesivamente dentro de Tasker. este campo de texto se lee: “Buenos días. Para crear variables de un tipo determinado (sólo las variables globales y locales pueden ser creadas por el usuario en Tasker). partes de ella se pueden cambiar por diferentes fuentes independientes. Otra tarea "ajena" no debería ser capaz de utilizar esa variable. Por el momento se puede hacer caso omiso de estos en aras de evitar una confusión innecesaria. Por otra parte. las variables globales se muestran en la pestaña Variables de Tasker (ver imagen de la derecha). los participantes son diferentes acciones. En la actualidad. las variables permiten que una parte de Tasker envíe información a otra parte. cualquier tarea "ajena" será capaz de verla. Estos pueden ser leídos por cualquier parte de Tasker. pero no se muestran en la pestaña Variables. muestran una parte de información generada por el sistema. Estas variables deben comenzar con una letra mayúscula. Con Internet los participantes son usuarios de Internet. sólo tienes que utilizar el formato correspondiente.• La información/colaboración es posible teniendo a varios participantes trabajando en la misma información • La información puede ser actualizada en su sitio una vez y aún así llegar a varios participantes sin tener que actualizarlos cada uno de ellos directamente. Variables para el intercambio de información y de texto dinámico Las variables se pueden utilizar para compartir información entre las partes de Tasker. por definición. no puede ser cambiado por el usuario. Has dormido durante %Smduration horas. e incluso entre los plugins y Tasker. que es una conversión de texto a voz. esa variable no estará disponible para otras tareas. Con Tasker y variables. %Lazy. y %BATT son los ejemplos que he usado anteriormente. %DATE. Las cuatro variables en el mensaje son cada una el resultado del trabajo realizado por otras tareas y acciones. y almacenar los resultados finales en estas cuatro variables. A pesar de que nunca entro y cambio manualmente el campo de texto de la acción Decir. no es nada. el teléfono dirá el siguiente mensaje: “Buenos días. Antes de que la acción decir comience. El valor de %Lazy es "bastardo perezoso". su valor es "Tiene elementos que debían presentarse en su lista de tareas. en un día lluvioso que no tengo nada que hacer. y el uso de variables me permite transmitir dicha información a donde lo necesito.2 horas en un día soleado en el que tengo artículos en mi lista de tareas. recogen y procesan los datos. Permite hablar a Tasker en un dispositivo. Pronóstico del tiempo para hoy es lluvia.2 horas. Si se activó a 23:00 y se desactiva a 07:00. me da dos opciones muy importantes: • Mi mensaje de la mañana es dinámico. el teléfono dirá el siguiente mensaje: “Buenos días. Bastardo perezoso. Si %Smduration es por lo menos 9. Usted tiene cosas en su lista de tareas” Utilizando aquí las variables de esta manera. decenas de otras acciones ocurren.%Norweather. su valor no es nada. se puede por ejemplo configurar un perfil Tasker que se activa si un mensaje que dice "hola" es recibido a través de AutoRemote. Los mensajes entrantes a través de AutoRemote se pueden utilizar de dos maneras: como disparadores. durante el cual el modo reposo estuvo activo. como "sol" o "lluvia". Has dormido durante 8. entonces el valor de %Smduration sería de 8. Digamos que usted quiere que su tableta sea capaz de decirle a su teléfono el estado de la . Si se utiliza como disparador. con Tasker en otro dispositivo. el contenido real del mensaje se puede transferir a una variable Tasker.5 horas.5 horas. el mensaje sigue los cambios. • Puedo transferir información de una parte a otra de Tasker. Ejemplo 2: AutoRemote AutoRemote es un plug-in de Tasker del que estoy especialmente encariñado. Pronóstico del tiempo para hoy es soleado. Su valor es una descripción muy breve del pronóstico del tiempo para ese día. • %Smduration es la duración." Si no tenemos estos artículos.” Si me levanto después de 10. Si el mensaje se utiliza como una fuente de información. Mediante el uso de estas cuatro variables el mensaje de teléfono varía en función de éstas y habla por la mañana (y esta es la razón para el nombre de "variable"). • %Todomorningnot es parte de mi sistema Tasker basado en lista de tareas. • %Norweather es el resultado de una tarea que hice para recoger datos meteorológicos noruegos. Esto podría servir. Si me levanto después de 8. o como fuentes de información. en horas.como SMS o correo electrónico. • El valor de %Lazy depende del valor de %Smduration. donde el envío de un mensaje con un "hola" desde el teléfono a la tableta activa una tarea que hace la tableta pitar. Permite que los diferentes dispositivos se comuniquen uno con el otro mediante el envío de mensajes entre sí que no son visibles para el usuario. %Todomorningnot. sin necesidad de utilizar un método de comunicación que sea para otra cosa . Si tengo elementos TODO en la lista marcados como "mañana".” Como puedes ver este mensaje contiene 4 variables. Si %Smduration es inferior a 9. Has dormido durante 10. por ejemplo como una característica "encontrar mi tableta". Yo uso ambas aplicaciones y las dos con Tasker. la acción de puente tiene que ser ejecutado con el fin de transferir esa información a Minimalistic Text. Ya que %tabletbattery es una variable local. Uso Minimalistic Text para mi lista de compras. El teléfono se puede configurar para buscar un mensaje que contenga "nivel de batería Tablet". Este es sólo otro ejemplo de transferencia de información a través de las variables. Para ello debe configurar AutoRemote para convertir el mensaje en una variable . sólo estaría disponible dentro de ese perfil. y estableciendo su valor a %tabletbattery.digamos %tabletbattery. AutoRemote tiene una opción para que sea una coincidencia exacta. La imagen de la pantalla de configuración de abajo muestra cómo está configurada la acción que hace de puente entre Tasker y Minimalistic Text. acción “Decir” o similar. pero fácilmente se podría utilizar la acción “Establecer Variable” en la categoría de Variable para crear una variable global. Este filtro de mensajes actuaría como el contexto para el perfil. utilizando una acción que transfiere información desde Tasker (ya sea texto estático o el valor de una variable) en variables de las aplicaciones propias. Así el mensaje que llega al teléfono contendrá el nivel de batería de la tableta. Ejemplo 3: Minimalistic Text y Make Your Clock Widget Minimalistic Text y Make Your Clock Widget son dos apps independientes de Android para creación de widgets que ambos tienen la capacidad de recibir información de Tasker. al tener un widget en la pantalla de bloqueo en el que Tasker puede escribir información.en realidad usando el contenido del mensaje también. la cual es una variable en una aplicación completamente diferente y. Basta con crear una acción “Decir” con %tabletbattery como texto y utilizarla en el perfil que se activa por mensaje entrante. La lista de la compra está manejada por mi propio sistema basado en Tasker. no sólo el uso del mensaje en sí mismo como un disparador. de lo contrario está en blanco. Luego en realidad estas creando una copia global de la variable local. reemplazará %BATT por el nivel de batería propia. Una vez que esta tarea se ejecuta. ya que transfiere información entre dispositivos. El widget sólo muestra algo si estoy fuera y tengo artículos en mi lista de la compra. Esto es similar al ejemplo anterior "encontrar mi tablet". Cuando la tableta envía este mensaje. Cada vez que %Todoshopping cambie en Tasker. el valor de una variable incorporada en la tablet es enviado a otro dispositivo a través de un plug-in. pero queremos ir un paso más allá aquí . lo que significa que el perfil se activará cuando un mensaje con "nivel de batería Tablet" fuese recibido. Su tablet podría enviar el siguiente mensaje a su teléfono: “Nivel de batería de la Tablet es %BATT por ciento” Donde %BATT es una variable incorporada. Esa variable podría ser utilizado en una notificación. que en este caso no queremos.batería. donde se convirtió en una variable que se puede usar en ese dispositivo. Ambos interactúan con Tasker de forma muy similar. En este ejemplo de AutoRemote. para que entonces su teléfono leyera el estado de la batería de la tableta en voz alta cuando recibe un mensaje de ella. como tal. pero uno más avanzado. no utiliza el símbolo % para indicar que es una variable. en cualquier lugar donde se utilice la variable en TODO en Minimalistic Text (entonces se mostrará el valor de %Todoshopping. Se transfiere el valor de la variable de Tasker %Todoshopping en la variable de Minimalistic Text TODO. como %Tabletbattery. Esto se hace mediante el establecimiento de la acción “Establecer Variable” para crear una variable con una capitalización de variable global. . . básicamente estás estableciendo una variable WiFi en "off" . Se encuentra ubicado en la sección Estado. Si lo piensas bien es así como funcionan los ajustes fuera de Tasker también. Si está conectado a una red WiFi llamado McDonald. La pantalla que se obtiene al seleccionar este contexto pide un nombre. Por contextos el valor de una variable es su contexto propio. Esto se realiza mediante la asignación de valores a variables que entonces se utilizan como referencias más adelante.Variables como ajustes Las variables tienen otro uso que es quizás menos aparente. Cualquier otra parte de Tasker entonces será capaz de comprobar el valor de %Hogar y. saber si estás en casa. contexto Valor de Variable. Hacer referencia a las variables: contextos Cuando digo que otras partes de Tasker pueden comprobar el valor de las variables y actuar en consecuencia. Nombre es el nombre de la variable. como %Casa.es sólo una forma más visual de hacerlo. es como tener una variable para la red WiFi con un valor de "McDonalds". Si tienes un perfil para cuando estás en casa. a su vez. pero sigue siendo muy importante a tener en cuenta: se pueden utilizar como ajustes. y en "off" cuando se desactiva (tarea de salida). Si usted entra en la configuración del sistema y apaga el WiFi. puede utilizar la acción “Establecer variable” para establecer un variable %Hogar a "on" cuando se activa (tarea de entrada). categoría Variable. Operador y Valor. hay muchas maneras de hacer esto. El nombre de la variable que se pone aquí es simplemente el nombre de la variable que contiene la información que desea que el perfil tenga en cuenta y reaccione. se establece la variable %Casa a 1. Voy a tratar las escenas en el próximo artículo. El perfil de la escuela hace lo mismo para la %Escuela. Hacer referencia a las variables: acciones No sólo los contextos pueden ser controlados por variables. las acciones también. y mi perfil exterior se activa cuando los otros dos no están activos. Cuando el perfil Casa está activo. En otras palabras. Para asegurarse de que todos los perfiles son mutuamente excluyentes. el perfil Escuela se activa cuando hay una entrada de calendario en mi calendario escolar. uso mis propias variables como parámetros. %Casa coincide a 0 y %Caminoalaescuela coincide a 0. usando una versión simplificada de las expresiones regulares.Op es un poco más complicado. Tienes un nombre de variable. Esto es para situaciones en las que termine pronto. El perfil de la escuela también tiene dos contextos Valor de Variable. Operador sería mayor que. y el valor sería de 9. pero para hacer boca. las condiciones “Si” y los contextos de “Valor de Variable” funcionan de la misma manera. En resumen. Para todos los supuestos y propósitos. El primero hace que el perfil de la escuela no está activo cuando estoy en casa (lo que podría suceder si terminamos temprano). Significa Operador. un operador y un valor que se ha de comparar con el valor de la variable. no coincide. y así sucesivamente. piense en el ejemplo anterior del mensaje de la mañana. se establece en 0 (tarea de salida). Mi perfil Casa se activa cuando estoy conectado a mi WIFI de casa. el operador se refiere a la relación entre el tercer campo del valor y el valor real de la variable. y se refiere al método que Tasker utiliza para comprobar el valor de las variables. Tengo tres perfiles que son mutuamente excluyentes y que utilizan diferentes contextos. y "on" (sin las comillas) como el valor. El contexto resultante se puede leer así: “Active el perfil si el valor de la variable %Casa coincide con "on" Por poner otro ejemplo. digamos que usted quiere un perfil que se activa cuando %Casa está establecido en "on" y se desactiva cuando está en "off". pero no vayas directamente a casa. Luego usaría %Casa como el nombre. Una condición “Si” es simplemente una condición que debe cumplirse para que la acción se ejecute. sólo se activa si ambas variables se establecen en 0 (que a su vez sólo ocurre cuando los otros dos perfiles están inactivos). El perfil exterior tiene entonces dos contextos Valor de Variable: %Escuela coincide a 0. Si desea crear un perfil que reaccione de la misma manera. La variable %Lazy tiene un valor diferente dependiendo de si %Smduration es menor que o mayor que 9. Se puede configurar para cosas como coincide. El contexto resultante se puede leer así: “Activar el perfil si el valor de %Smduration es de al menos 9” Para terminar con un ejemplo del mundo real. y %Casa coincide a 0. mientras que esta última variable se ajusta mediante un botón en una escena que tengo. Tanto los perfiles Escuela como Casa tienen ajustes de variables tanto en la tarea de entrada como en la de salida. pero en realidad no es . Eso sucede en mi perfil de “modo de reposo”. el nombre sería %Smduration. En la sección anterior. utilizo este sistema para los perfiles de ubicación. coincide como el Operador . expliqué cómo el contexto Valor de Variable trabaja usando la configuración %Smduration superior a 9 como ejemplo. presiono un botón que dice "Desactivar escuela" y desactiva el perfil de la escuela. Una de las imágenes en mi primer artículo señala la casilla de verificación “Si” en una pantalla de configuración de la acción. A modo de ejemplo. y te permite controlar la acción en función de las condiciones del “si”. y cuando se desactiva. lo que me permite activar manualmente el perfil exterior (desactivando el perfil de la escuela) para aquellas raras ocasiones. matemáticas: Menor que. Esta casilla de verificación está presente en la mayoría de las acciones. seleccione = (coincide) como operador y escriba 1 en el segundo cuadro. Si no lo es. escribir %Casa en el primer cuadro. La forma de leer esta configuración es como sigue: “Si la condición SI se cumple. Simplemente significa que tendrías que establecer el contexto / condición Si de %Casa coincide "Cachivache". También es posible agrupar varias acciones en la misma condición “Si”. la acción sólo se ejecutará si el valor de Smduration% es mayor que 9. Cualquier acción que siga a la acción “Si” se anida debajo de él y sigue su condición. 9 en el segundo. Si quiero una acción que se ejecute sólo cuando estoy en casa. Para ello utilizas la acción “Si” que se encuentra en la sección Tarea. Como se puede ver la casilla de verificación “si” está activa. que es el símbolo de mayor que.utilizado como un contexto en ese perfil: se utiliza para limitar una acción con una condición “SI”. Esta es una acción opcional que puedes utilizar entre una condición “Si” y un “Fin Si” para crear un nuevo grupo de acciones (anidadas bajo la acción “Else”) que se ejecutará si la condición “Si” no se cumple. Esto es simplemente un método más sencillo para la aplicación de la misma condición “Si” para múltiples acciones Por último. Se cierra el grupo mediante la inserción de una acción “Fin Si”. De esta forma sólo se ejecutará cuando el valor de la %Casa es de 1. Tú decides cómo deben ser los diferentes estados de un ajuste. %Smduration se introduce en el primer campo. donde he insertado una acción “Else” para la demostración. La imagen de la derecha muestra cómo se configura. configúralo como lo harías con un sistema integrado de condición “Si” y luego se coloca antes de la primera acción que deseas en la agrupación. y si tuvieras que crear tu propio perfil Casa con una variable %Casa. hay una acción en la misma categoría llamada “Else”. y el operador >. La ilustración de arriba muestra esto con uno de mis perfiles. pero sólo si no se cumplen. Ten en cuenta que la decisión de establecer %Casa / %Escuela a 1 o 0 en lugar de on o off es una opción personal. Puedo usar el mismo sistema para limitar las acciones individuales basadas en la variable %Casa creado por mi perfil Casa. la tarea simplemente se salta esa acción. ejecute la acción 3 (Notifíqueme de sonido) y 4 (Minimalistic Text) . no hay absolutamente nada que nos impida usar tanto el valor "Cachivache" como "on" y "huracán" como "off". Con la acción configurada de esta forma. lo que sólo ocurre cuando estoy realmente en casa. lo único que tienes que hacer es marcar la casilla “si”. Utilice una condición “Si” con la variable en cuestión como la variable. ya que el comodín está sólo delante de la palabra. *ndroid* aquí no es necesario porque *android* coincidiría tanto con Android como con android. *Android coincidirá con “me gusta Android” pero no con “me gusta Android mucho”. como “me gusta Android mucho”. coincide como operador. creamos una acción “Establecer Variable” de esa variable y establecerla a un espacio. Sin embargo no funciona al revés. ya que permite crear contextos y condiciones “Si” que reaccionan a varios valores de variables diferentes. y 3. Gran parte de ese artículo es lo mismo que lo que has leído aquí. no para principiantes. porque el primero captura tanto Android y android. + Significa "al menos un carácter" Se puede ver el uso de esta en el “Si / Else / Fin si” de la captura del apartado anterior. por lo que *Android* no va a coincidir con los dos. y realmente sólo te ahorra añadir un segundo grupo “Si” que sea exactamente lo contrario del primero. no importa los que sean" Las variables vacías Las variables vacías no se sustituyen por espacios en blanco. Para hacer que aparezca un espacio en blanco en su lugar. Si se crea una notificación con %Variable como texto y esa variable no contiene nada. Si escribes Android en el campo de valor y coincide como operador. que se puede encontrar aquí.Si no (Else). Escribí un artículo sobre el control de perfiles utilizando variables. en el caso de la acción se configura como %Todoshopping coincida ++. * Es un comodín. pero fue escrito para usuarios avanzados de Tasker. es importante ser consciente de la tres caracteres especiales *. Tasker lee esta condición como "Si %Todoshopping contiene al menos dos caracteres. En algunos casos es mejor utilizar *ndroid* en lugar de *Android*. Yo no era consciente de ello. captaría los valores de variables de 1. / y +. lo que significa que se puede utilizar para que coincida con una parte de un fragmento de texto. *Android* por otro lado coincidirá con cualquier uso de la palabra Android. Introduciendo 1/2/3 en el campo de valor y utilizando coincide como operador. en la primera acción. / Actúa como O. Actualizado: Sean señala en los comentarios que se pueden utilizar todas las letras minúsculas en concordancia con el modelo y funcionará con todo. lo que significa que permite la inserción de varios valores en un solo campo. y *nombre variable sin símbolo %* como el valor (ver la imagen de abajo para ver lo que quiero decir con esto). Por ejemplo. no detrás de ella. sino que mantendrán su nombre de variable completo de referencia. Ejemplo para la variable %Home: . ejecute la acción 6 (Stop)” La acción “Else” es opcional. Los caracteres especiales Cuando se realiza la coincidencia de patrones utilizando este método. entonces la notificación literalmente dirá %Variable. Esto es muy útil. 2. y es más cómodo cuando se trata de mayúsculas y minúsculas. sólo coincidirá el texto exacto de Android. Lo que tienen en común es que procesan la información después de que se haya importado en Tasker. Nelly se basa en variables de coincidencia de patrones Para terminar esta parte de la guía. y otros. más adelante en la guía. después de que algunas otras cosas básicas estén aclaradas por el camino. para ver cómo se aplica en la práctica y en una escala tan grande. Para ello. que se detecta por ver si el valor de la variable es el nombre de la variable. quiero mencionar que mi asistente DIY Tasker basado en voz. está construido (más o menos) enteramente en el concepto de variables y comparación de patrones. Procesamiento de datos utilizando variables Hasta ahora he hablado sobre todo acerca de las formas simples de usar variables para transferir las acciones de información y control y contextos. pero eso es sólo la mitad de la historia. ya que más o menos cualquier fuente de información basada en texto. esencialmente tomando una sola variable llena de información y cortándola en trozos pequeños que se pueden utilizar como valores o como texto dinámico. “Separar Variable” es una de las más poderosas. Saber utilizar estas te da la posibilidad de que Tasker haga prácticamente cualquier cosa. . Nelly. probablemente obtendrá un mensaje de error diciendo que el campo no puede estar vacío. quiero dedicar un artículo entero a este tema. Para aquellos que han leído mis artículos mayores acerca de Tasker. De lo contrario. Por lo tanto. probablemente habrás visto algunos artículos que procesan datos internamente en Tasker. se utilizan muchas de las herramientas disponibles en la categoría de variables en la lista de acciones. Desafortunadamente este es un tema enorme. “Variable Buscar y reemplazar”.Esto escribe un espacio como valor de la variable si está vacía. Los ejemplos son un locutor de pronóstico del tiempo y locutor de evento del calendario. online u offline. He querido mencionarlo brevemente aquí para no dar la impresión de que falta algo. se puede utilizar con Tasker. y ya estoy pasando de 4000 palabras en esta explicación "sencilla" de las variables. Puede ser una buena idea leer este artículo (antiguo) después de esta parte de la guía. pero también encontrarás “Sección de Variable”. Tenga en cuenta que usted debe insertar el espacio en el último campo de texto y guarde inmediatamente sin seleccionar nada más. un campo de texto que le permite escribir texto en una variable. barras de desplazamiento. Se pueden arrastrar los bordes de la escena hasta que tenga el tamaño deseado. y así sucesivamente. y todo manejado con Tasker. y luego voy a ir tratando múltiples ejemplos para mostrar cómo funciona todo en la práctica y con diferentes usos. Cuando el icono de la lupa no se ilumina con un trazo verde (o tiene sobre su centro una cruz). etc. Escenas. La forma de agregar una escena nueva es clicando en el signo más. imágenes. la pantalla completa como una aplicación. botones. el texto. Tras poner un nombre a la escena que se está creando. y en la parte inferior hay iconos para confirmar/volver y para cancelar. la introducción de texto. indicado en píxeles en el borde. o un regulador que controla el brillo de la pantalla. como una capa superpuesta sobre otra aplicación. como los botones. lo primero que se ve es una pantalla con un recuadro en el centro.Iré rápidamente tratando los fundamentos de cómo crear una escena. Piense en una escena como una caja que contiene diversos elementos que normalmente se encuentran en una interfaz de aplicación. El tamaño y el tipo de escena que depende de lo que necesite que la escena haga. Las escenas pueden ser de todo tipo de tamaños y se pueden mostrar en diferentes formas: como un cuadro de pop-up. imágenes. es porque se está en la pantalla para editar la base "lienzo" de la escena. Creación de una escena Las escenas tienen su propia ficha en cada proyecto. de modo que usted puede tener un botón que ejecuta una tarea. y también el icono de una lupa. Tercera parte de la guía dedicada a las escenas con las que podrás crear interfaces. Acciones normales de Tasker pueden estar vinculadas a estos elementos. En la actualidad no hay manera de . ¿Qué son las escenas? Las escenas son interfaces de usuario que se pueden crear en Tasker.Tasker para principiantes. Lección 3. y así sucesivamente. y hay varias pestañas de configuración que se necesitan para manejar cada elemento. capaz de contener acciones. En su mayor parte. y voy a mostrar cómo se pueden utilizar en la práctica en ejemplos posteriores. añadir botones. se puede actuar sobre el modo avión mediante un botón: eso dará lugar a un botón en el que el modo avión se activa y desactiva alternativamente cuando se hace clic. Por ejemplo. La opción de tamaño de la cuadrícula controla la red o cuadrícula que se utiliza para editar la escena. y cuyo nombre indica lo que desencadena la acción. colocar un elemento para que aparezca debajo de otro. el icono y la etiqueta son sólo algunos ejemplos de las opciones que se encontrará en esta ficha. Tamaño del texto. El botón del oso/mano le permite ajustar el modo táctil. cada pestaña es esencialmente una tarea. algo que probablemente va a cambiar ahora que las escenas tienen un papel mucho más importante debido a la funcionalidad de creación de aplicaciones de Tasker. pero debo mencionar que el regulador sin etiqueta controla la transparencia / opacidad. en concreto iconos que representan un osito de peluche (una mano con el dedo índice levantado) y un símbolo más. Las Variables funcionan bien en estos campos. nombre. Cualquier cosa que usted quiera que suceda (acciones Tasker) cuando el botón se pulsa está en la pestaña Clic. Si mantiene presionado en elementos existentes le permite hacer cosas como copiar.Clic. Si quieres tres botones uno al lado del otro y del mismo tamaño en el escenario. Observe que el nombre es lo que Tasker utiliza para referirse a un elemento internamente en Tasker. aparecerán algunas opciones como el tamaño de cuadrícula y el color de fondo. tendrás que tener un tamaño de cuadrícula que permite tres botones de idéntico tamaño. Aparte de estar en las pestañas. Aquí es donde puede editar el contenido de la escena. El signo más es para añadir nuevos elementos a la escena. con las tres opciones que son normal. ya que trata de cómo el elemento aparece o es mostrado. lo que afecta a la precisión de la colocación de los elementos de la escena. y también muestra la red que acaba de establecer el tamaño de la escena. bloqeuarlo para que no pueda ser movido accidentalmente. imágenes. posición. mientras etiqueta o texto (en función del tipo de elemento) son los campos que controlan lo que el elemento realmente mostrará. El selector de color de fondo es bastante explicativo por sí mismo. pero también puede hacerlo si simplemente mantiene pulsada la pantalla para obtener esta opción. y de manera similar con la pestaña Clic-largo. Las otras pestañas en la pantalla de configuración varían en gran medida dependiendo del tipo de elemento. profundidad establecida. texto.establecer el tamaño en píxeles directamente. en el borde cambio de tamaño . y no todos comparten las mismas opciones. etc. Tocar la lupa hace visibles algunos botones nuevos. limitarlas . Puede duplicar un elemento. Cuando se agrega un elemento. Es posible utilizar múltiples acciones. pin. ocultar. de la que me ocuparé más adelante. Los otros dos se limitan a la edición en movimiento o re-dimensionado de un elemento. Por ejemplo. al agregar un botón a una escena aparece una pantalla de configuración con tres pestañas: UI. las acciones funcionan como usted está acostumbrado. Clic y Clic-largo son cada una acciones que desencadenan sus propias tareas dependiendo de si se toca el botón o si deja se presionado. Algunos nuevos botones también aparecen en la parte inferior.pero en pequeños elementos a menudo sólo se puede redimensionar). una pantalla de configuración aparece. Normal significa que se puede mover y redimensionar elementos en la escena. borrar. mover y redimensionar. color. Configuración de los elementos Hay 11 elementos diferentes que se pueden agregar a una escena. etc. Al hacer clic en el botón de menú. todo dependiendo de en qué parte del elemento que toque (en el centro es movimiento. La pestaña IU de interfaz de usuario (y pestaña en segundo plano en su caso) suele ser bastante autoexplicativa para todos los elementos. y Clic-largo. También tenga en cuenta que algunos aspectos de cómo la escena se verá son controlados por la acción que desencadena la escena. en segundo plano sin mostrarla. Crear la escena y Ocultarla se refieren a este estado de visibilidad. Al igual que con las acciones individuales. Estas cuatro acciones son: Crear-escena. El nombre de "destruir" puede ser confuso ya que suena como que borra la escena que ha creado. y de la misma manera. Opciones de Mostar-escena La acción Mostrar escena es el método que más probablemente utilice para activar sus escenas y hacer que aparezcan. etcétera. porque la creación no implica que la escena sea mostrada y la acción de ocultarla sirve para que una escena deje de estar visible sin llegar a cerrarla. pero esto es fácil de decir en retrospectiva. Los ejemplos al final van a mostrar algunas maneras de utilizar estas acciones en la práctica. la categoría escena incluye 20 diferentes acciones utilizables. pero todavía permite que se ejecute en segundo plano. Una escena puede estar activa incluso si no se muestra. “Mostrar como”. por lo que sólo hay que tener en cuenta el doble uso de la palabra. a la"plantilla" que creó en Tasker en absoluto . Con 11 tipos de elementos todos los cuales funcionan de manera distinta. que en esta acción tiene 9 estados diferentes: . hay una gran cantidad de diferentes pestañas con las que hay que familiarizarse. hay una opción o display. De hecho significa a menudo eso. Ocultar-escena. Las escenas se pueden utilizar para hacer muchas cosas y los ejemplos son la mejor manera de tratar de explicar su potencial en lugar de tratar de explicar cada componente individualmente. Destruirescena. Como dije anteriormente. de modo que no se ejecuta en el fondo tampoco. Para hacer esto perfectamente claro. Mostrar escena muestra la escena. y la crea (la inicia) si es necesario. la edición de una escena. pero el botón de ayuda Tasker está disponible en las pantallas de elemento de configuración para explicar cómo funciona cada elemento. pero hay cuatro acciones especiales que controlan la existencia de una escena. esta acción realmente controla algunos aspectos de cómo la escena se verá.  Ocultar escena: Oculta una escena. una escena que está activa en el fondo ocupa recursos del sistema. hay también demasiados detalles como para tratar cada uno. pero en realidad no afecta a la escena.  Destruye escena: Cierra la escena completamente. Activar y desactivar habrían sido mejores opciones para los nombres.  Mostrar escena: Muestra una escena creada (y la crea si es necesario). Se puede comparar con cómo una aplicación puede ejecutarse en segundo plano. he aquí una breve vocabulario de términos utilizados a menudo con escenas:  Crear escena: Inicia una escena en el fondo. En concreto. y los únicos de estas cuatro que realmente yo utilizo.es simplemente que cierra la escena por completo. Esto puede ser confuso ya que la mayoría de la gente asume que "crear escena" se refiere a lo que haces en el editor de escenas. Activación de escenas Entre las acciones disponibles. Mostrar-escena. Mostrar la escena y Destruirla son las dos opciones más utilizadas. La acción Destruir cierra la escena.utilizando condiciones Si(if). Normalmente se usará Mostrar escena para hacer aparecer una escena y Destruir escena para que desaparezca y no se ejecute en segundo plano. Los ejemplos al final de este artículo entrarán en detalles sobre cómo están configurados los usos específicos de algunas escenas. La mayoría de ellas tienen que ver con la manipulación de elementos mediante acciones normales. bloqueo  Superposición. Con la nueva capacidad de exportación de app de Tasker. podría hacer una pequeña escena con controles de música. Superposiciones de no-bloqueo también se muestran en el bloqueo del teclado. y mostrar estos como una superposición en la parte inferior de la pantalla cuando el explorador está activo (utilizando un Perfil de app). Una escena que se muestra con una opción de diálogo sería perfecto para esto. definido. . Las actividades son vistas estándar de aplicaciones Android. sin título Estas 9 opciones “Mostrar Como” deciden cómo se mostrará y actuará la escena. como los cuadros de diálogo tipo sí/no y similares. La acción Mostrar escena también tiene una opción de "mostrar botón de salida". Esto es particularmente útil para las escenas de superposición que a menudo tienen que ir en una cierta parte de la pantalla. Si utiliza cualquiera de la pantallas como opciones que no son a pantalla completa. De la guía de usuario Tasker: Todas las superposiciones se muestran sobre la aplicación actual y persisten hasta que son escondidas o destruidas. Como resultado. detrás  Actividad. Ten en cuenta que las opciones de visualización a veces actúan de manera diferente en diferentes dispositivos y versiones del sistema operativo. que está activado por defecto. muestra completa. sin-definición. Digamos que usted quiere tener controles de música visible durante la navegación. muestra completa  Actividad.  Las superposiciones son para las escenas que muestran una parte de otra aplicación. y que luego aparezca un cuadro con varias opciones para lanzar aplicaciones. Mi consejo es probar las opciones y ver cuáles funcionan mejor para usted. muchas personas se encuentran utilizando escenas como las pantallas de configuración de aplicaciones exportadas. Lo que tenemos aquí es esencialmente tres tipos de pantalla.  Escenas de actividad son para las escenas que funcionan más o menos como las aplicaciones. detrás  El diálogo. Ten en cuenta que hay una acción llamada Menú en la categoría de alerta que proporciona una manera alternativa de crear una escena de diálogo. A continuación. ventana completa  Actividad. bloqueo. usted también tendrá algunas opciones adicionales que ajustan la posición de la escena. Superposición  Superposición. muestra completa  Diálogo  El diálogo. Es posible que desee tener un perfil que se activa al enchufar los auriculares.  Los diálogos son esencialmente cajas pop-up. Superposiciones de bloqueo sólo bloquean toques en la parte de la pantalla que cubren. cada uno con tres variaciones. Los diálogos son pequeñas ventanas emergentes que interactúan con todas las entradas de usuario a la vez que se muestran y pueden ser despedidas con la tecla Atrás. se suele utilizar estas opciones para las escenas que quiere hacer actuar como aplicaciones. Muy a menudo. Usted puede generar un problema si utiliza ciertos tipos de visualización y desactiva esto sin que haya creado otra opción de salida. ¿Cómo se activa? Este menú de configuración se puede activar mediante dos accesos. se ejecuta una tarea llamada “Mostrar Psett”. Ejemplo 2 y 3: tienen la acción Mostrar después. como el establecimiento de un valor de elemento (ejemplo 1). 3). porque la otra acción actúa sobre un elemento de la escena. la carga de archivos de texto en variables (ejemplo 2). Como he dicho. Este es un mecanismo de seguridad para evitar que alguien haga una escena y no haya forma de cerrarlo. Ejemplo 1: tiene la acción de Mostrar escena primero. la parte difícil de las escenas tiene que ver con la fabricación de todas las partes trabajan juntas correctamente. Cuando se toca en cualquiera de los accesos directos. tienen que reunir información y ponerla en su lugar antes de que la escena puede ser creada. lo que requiere que la escena tiene que existir previamente. Yo lo uso como una forma de acceder rápidamente a lasconfiguraciones que uso a menudo. uno en la pantalla del escritorio. la mayoría de las cuales son los ajustes para mis propios perfiles de Tasker y tareas. y más botones que hacen todo tipo de cosas. También hay que prestar atención al orden de estas acciones. usted tiene que hacer una preparación adicional en la misma tarea con el fin de crear correctamente la escena. que es lo que yo uso en este caso. Tasker tiene una función incorporada que le permite ejecutar tareas desde accesos directos.Esto muestra un botón de salida rojo en la esquina inferior derecha que cerrará la escena al tocar ese botón. los botones para activar varios perfiles que tengo. no con la configuración de los elementos individuales. Hay un control deslizante y los botones de control de brillo de la pantalla. y otro en mi pantalla de bloqueo. preste atención a cómo la acción Mostrar escena rara vez es la única acción en la tarea que activa la escena. así que asegúrese de que usted tiene algún tipo de forma de destruir u ocultar la escena desde dentro de la escena antes de desactivar esta opción. y la descarga de las imágenes de la web (por ejemplo. En los ejemplos que siguen. Ejemplo 1: menú de configuración pop-up Mi menú emergente de configuración se ha ido desarrollando paralelamente a como le he ido añadiendo cosas con el tiempo. Este contiene . ya que las otras acciones en la tarea que desencadena la escena. Esto es una configuración que está en la pestaña de la interfaz de usuario (UI) del elemento “control deslizante”. el indicador estará en la posición correcta cuando el cuadro de pop-up aparece. y le permite manipular el valor de un elemento mediante una tarea. primero hay que entender cómo trabajan los elementos genéricos de una escena. Es un poco tedioso tener que dar este rodeo. el control de deslizamiento se iniciará a 0 cada vez que se crea la escena. establece el brillo de la pantalla a 255. Así que. y se ejecutan todas las acciónes que están en la ficha Valor-seleccionado. copio el valor de %BRIGHT en mi propia variable %Brait. usted tiene que decirle al control donde se coloca el indicador. Valor del elemento es una acción en la categoría de escena. El brillo de la pantalla tiene 255 niveles en Tasker. En este caso. por lo que no se puede utilizar la variable interna%BRIGHT (que siempre contiene el nivel de brillo actual) en ese campo. el desarrollador de Tasker debía estar un poco fiebroso cuando creó la acción de Valor del elemento. esta tarea consiste en dos acciones: Establecer variable y Valor del elemento. Por tanto. Lo único que hace es convertir la posición del control deslizante en un valor. En este caso.”. Es importante entender que el control deslizante no sabe que es un control deslizante de brillo. ¿qué pasa con la acción Establecer variable? Bueno. Actualización del control deslizante: una lección de cómo tratar con los elementos genéricos La segunda acción. desea que el control deslizante este a 1/4 del máximo del recorrido.dos acciones. Valor-seleccionado es la versión del elemento regulador de las pestañas Clic / Clic-largo que he mencionado anteriormente para los elementos de botón. El resultado es que si muevo el deslizador hasta el final. Como se puede ver arriba. Para evitar este "bug". El valor de campo sólo acepta variables y números globales creados por el usuario. y para que esto suceda. cuando lo deslice hasta el final. Para entender por qué está ahí. Además. moviendo la palanca hasta el final a la derecha se ajusta el valor de %new_val a 255. y eso es todo. así como cómo funciona el elemento deslizante. En mi control deslizante de brillo. La acción Mostrar escena es lo que he descrito más arriba. Esto es lo que hace la tarea de actualización Br. . será de 255. tiene que ver con el control deslizante del brillo de la pantalla en la escena. y así sucesivamente. que es 100%. Mostrar escena: Popupsett. el valor es de 128. el valor que los terrenos deslizantes toman en cuando se suelta el mango se escribe automáticamente en la variable local %new_val. que ejecuta la tarea independiente de actualización de Br. es necesario indicar al control deslizante que empiece por ahí. que es lo que el valor de la corredera tendrá cuando el mango deslizante este todo el recorrido hacia un lado o el otro. Un elemento deslizante en una escena tiene que ser configurado con un mínimo y un valor máximo. Tasker ejecuta las acciones añadidas a la ficha valor-seleccionado. y en este caso se utiliza la opción diálogo oscureciendo lo de detrás. esta pestaña contiene una sola acción: Brillo de la pantalla. y utilizo esa variable en el campo Valor. Cada vez que se mueve la palanca deslizante. Al deslizar el cursor hasta la mitad. porque la corredera no conoce ni le importa cuál es el nivel de brillo actual. La otra pestaña en la configuración para el control deslizante es el Valor-seleccionado. pero vale la pena porque un control deslizante de brillo es una cosa útil para tener en una escena y es necesario inicializarlo al nivel adecuado. así que mi regulador de brillo está ajustado para ir de 0-255. Mediante la ejecución de una acción de Valor del elemento que establece el valor del control deslizante hasta el nivel de brillo actual como parte de la misma tarea que activa la escena. Con el fin de hacer al indicador deslizante estar en la posición correcta cuando la escena aparece. donde se establece el campo Nivel a: %new_val. y realizar tarea: “Actualizar Br. queremos decirle al control deslizante que coloque el indicador deslilzante en el mismo nivel al que el brillo de la pantalla se encuentra actualmente en. Si usted tiene un 25% de brillo. las tareas de Mostrar escena y Actualizar Br se podrían verbalizar del siguiente modo: Mostrar una ventana emergente con la escena de ajustes y situar el indicador de control deslizante de manera que coincida con el brillo de la pantalla actual. Donde el texto en rojo indica lo que hace Mostrar-escena y el texto en azul indica lo que hace la tarea de actualización-Br. En cuanto a por qué las dos acciones dentro de la tarea de Actualizar Br. En este caso. lo que significa que no es necesario que esté en su propia tarea separada. pero el regulador no sabe eso. Terminé cambiar el sistema y ya sólo la tarea Mostrar Psett utiliza realmente esa tarea. La lección importante de esto es que los elementos de una escena son genéricos.Para poner todo esto en palabras. voy a mostrar un ejemplo en el que tal separación tiene un uso. esto originalmente era para referirse a la misma tarea de actualización desde otros lugares que sólo requerian esa tarea. están en su propia tarea. La escena: . en lugar de ser parte de la tarea Mostrar Psett. Sin embargo. y eso significa que no siempre funcionan de la manera que usted piensa que podrían funcionar. En el ejemplo 5 encontrará un uso para el control deslizante que prueba bastante concluyentemente que no tiene por qué ser un regulador de brillo. en el ejemplo de “Lista de tareas” a continuación. por lo que necesita que se le diga que el nivel de brillo ha cambiado con el fin de mostrarlo correctamente. el control deslizante se utiliza para controlar el nivel de brillo. elementos de texto y un elemento deslizante. y el deslizador también habría sido capaz de controlar el brillo.Esto es lo que la pantalla de edición de escenas muestra desde la pantalla de configuración de escenas y lo que se muestra cuando se activa. Esto se debe a la propia escena cubre la mayor parte de la pantalla. a pesar de que el tipo es Mostrar comodiálogoocultandoelfondo. y el efecto de la opción de ocultar el fondo. estoy usando una malla que me permite espaciar botones de distintos tamaños distribuidos equitativamente. y el deslizador refleja esto por la tarea de actualización Br. pero inicialmente no habría mostrado el nivel de brillo correcto. Es una colección de elementos de botón. por medio del tamaño adecuado de la rejilla. pero todavía se puede ver la barra de estado brillando. el brillo real seguiría siendo del 25%. Sin esta tarea. Los siete botones de arriba: . Como puedes ver. En este caso. el cuadro Configuración en realidad parece que es pantalla completa. También tenga en cuenta la posición del mando deslizante. El brillo se fija en un 25% en esa imagen. Botones perfil Los tres botones de perfil controlan un sistema de perfil que está separado de mis perfiles automatizados de los que hablé en la parte 2 de esta guía. Los valores que se establecen para %Profile en el presente caso son literalmente "Modo normal". con imágenes de webcam. se desactiva el modo silencioso. Dos de los botones. abre la escena de mi lista de tareas. el valor de %Profile literalmente tiene que ser "Modo película. no es importante aquí. sin embargo. así que quiero la escena permanezca activa (que no se cierre) cuando hago clic en el botón.Los siete botones de arriba hacen todos cosas diferentes. Para que quede constancia. “imagen de la webcam” ("WebCam image") y “lista de tareas” ("Todo list"). Están diseñados para ser activados manualmente. pero todos son bastante básicos. le da un valor específico a la variable %Profile ("perfil"). Cada botón cierra la escena (usando Destruir escena).T: esta ultima frase puede no ser del todo correcta). a encendido o apagado. "Modo silencioso" y "Modo película". abrir una escena: "ventana virtual". mientras Realizar-tarea ejecuta una tarea independiente de Tasker. Modo de película y el modo Silencio son perfiles separados por completo. Para que el perfil de modo de película este activo. deshabilita o deja inactivo el perfil activo de la escuela utilizando una variable. y así no tengo que iniciar la escena de nuevo para desactivarlo después. lo importante es usar estos botones para ejecutar otras tareas desde una ubicación central. enciende el monitor de mi ordenador de forma inalámbrica (N. La mayoría de ellos tiene dos acciones: Realizar tareas y Destruir la escena. los cuales utilizan como contexto: Valor de la variable. y en el caso del botón de modo normal." En el artículo anterior hablé acerca de las ventajas de la . ponen en marcha nuevas escenas que serán tratadas como ejemplos separados. cambia el flash LED. La funcionalidad real de las tareas detrás de las acciones de Realizar Tarea. Destruir-escena cierra la escena “ajustes”. los siete botones hacen lo siguiente: Ejecutar una tarea que archiva los artículos que he escrito en este sitio ese día. La razón por la que la tarea TeslaLED no usa Destruir-escena es porque la uso como linterna momentánea: cambia el flash LED en el teléfono. por lo que tengo botones para ellos. y por lo que si desapareciese la escena sería molesto. Dado que el valor de %Profile es el nombre completo del perfil activo. No entro en detalles sobre cómo lo hice en ese entonces. pero lo haré ahora. donde se establece el elemento de texto para que aparezca "Profile: %Profile" ("Perfil: %Perfil").T: enlace al artículo original referenciado. también hay botones presentes que fijan el brillo a valores específicos. utilizando un valor de texto (complicado) tiene una gran ventaja. Esta ventaja se puede ver en la imagen de la derecha. y luego destruyen la escena. esta configuración de botón de perfil muestra cómo se puede activar y desactivar los perfiles completos utilizando elementos de la escena. por lo que el 50% es 128). en inglés). Ese botón está ahí para cuando se utiliza el botón de LED o el control deslizante de brillo. el elemento de texto sería por ejemplo "Perfil: 1". Ejemplo 2: lista de tareas Hace un mes me di por vencido en los sistemas comerciales de lista de tareas e hice uno propio en Tasker (N. Los elementos de la escena (botones en este caso) establecen una variable en valores diferentes. ya que la mayoría de lo que sucede está una escena. Dejando a un lado esta pequeña lección de cómo nombrar los valores de las variables. ¿Cómo se activa? .utilización de los valores numéricos en lugar de valores de texto para las variables que se utilizan como parámetros. el elemento de texto acabará mostrando el nombre de modo activo (esto se puede ver en la captura de pantalla anterior. Como he explicado antes. la decisión de no incluir un Destruir-escena con ellos es porque espero seguir utilizando la escena después de interactuar con ellos. pero en este caso. sólo hace una cosa: destruir la escena. Controles de brillo Ya he explicado cómo funciona el regulador. Estos botones sólo ajustan el brillo al nivel especificado (medido desde 0-255. ya que esos dos elementos no incorporan su propia acción Destruir-escena. En cuanto al botón OK. y luego activan varios perfiles en función de ese valor. pero como habrás visto. Si hubiera empleado como valores 0/1/2 en lugar del Modo normal / Modo silencioso / Modo película. Esta simplemente retrasa el resto de la tarea durante medio segundo. Al igual que el ejemplo anterior. La escena: . Como tal. La misma tarea se ejecutará desde el cuadro emergente de configuración del ejemplo 1. Estas acciones leen los archivos de texto y los convierten en variables. la casilla Mostrar-Como está establecido en Dialogo ocultando el resto. Puedo recibir notificaciones de los elementos de la lista de la compra cuando salgo fuera. y de la lista de casa (que aparece como "after school" en algunas partes del sistema) cuando llegue a casa. cada una para una situación diferente. La acción quinta y última es Mostrar escena. La cuarta acción es una acción Espera.El sistema de lista de tareas en la actualidad consta de tres listas. de la lista de por la mañana cuando me levanto. una para cada lista. con un propósito que voy a tratar más adelante. pero Tasker necesita convertirlos en variables para mostrar su contenido. utilizando la acción de Realizar Tarea. que en realidad hace que la escena aparezca. Estas listas se almacenan como archivos de texto físicos en mi teléfono. las tres primeras acciones en la tarea que activa la escena “lista de tareas” son acciones de Leer archivos. El campo entre el título y la etiqueta es un campo de entrada de texto. Botones y el botón Guardar: . con algunos ejemplos arrojados a este último por si acaso. y los tres campos de la parte inferior son campos de texto.Esto es lo que la escena muestra en el modo de edición y en el uso real. Editar Texto. El problema con esto es que si usted está escribiendo. habrá una variable %todotitle que contiene todo lo que se teclea en el campo. Yo en realidad no creo que ni siquiera necesitara hacer eso. Lo siguiente son los botones. se escribe el contenido del campo en la variable local %new_val. para todas y cada una de las letras ). En otras palabras. usted va a ejecutar esas acciones un montón de veces. se anexa el archivo de texto correspondiente con el valor de %todotitle (más un cambio de línea) en función del valor de %todotag. sólo hay una acción. al igual que cómo el control deslizante ejecuta todas las acciones en la pestaña valor modificado cuando el deslizador se mueve. Cuando he terminado de escribir en el campo de texto. Estos son botones muy simples y establecen la variable %Todotag a lista de la compra.Los campos de Editar Texto trabajan muy parecido a los controles deslizantes. Se filtra esto usando Si(If) en las acciones de escritura de archivos. le aconsejo que se mantenga el número de acciones en esta ficha al mínimo. Por lo tanto. Cada vez que se introduce algo en el campo de texto (por ejemplo. . El botón Guardar ("Save") es donde sucede la magia realmente. que transfiere el valor de %new_val a mi propia variable. en su pantalla de configuración. También se ejecutan todas las acciones en la pestaña Texto-modificado. Cuando se hace clic. lista de casa o lista de la mañana respectivamente. todo lo que escribió en el campo de entrada de texto se añade al archivo de texto para la lista que haya seleccionado mediante el boton guardar. pero tengo una vieja costumbre de utilizar variables creadas por el usuario. %todotitle. Para mí. A veces hay que dar a las tareas un poco de respiro.La lección importante aquí es cómo el uso de un botón Guardar independiente significa que puedo poner la acción de Escribir archivo fuera del elemento Editar texto y su rápida sucesión de textos modificados. En lugar de añadir un botón por separado. también necesitaba un botón que realmente cerrara la escena. de manera que se muestren los nuevos contenidos de los archivos de texto. Esto se hace mediante la adición de acciones a la pestaña de Clic-largo. no cargaba correctamente al hacerlo sin espera. dejándolo pulsado en lugar de hacer un clic corto. en este caso una simple acción de Destruir escena. así como también repetiría todas las letras precedentes. simplemente añadí un segundo uso para el botón Guardar. dejando libre el campo de entrada de texto y actualizar los elementos de texto. empleando las acciones de Espera. Tuve problemas con la escena. Después de que se ha guardado el texto en un archivo. y esto es sólo otro ejemplo. Aquí es donde la demora de 500 milisegundos entra en juego. La función de esto es para actualizar la escena completa de la manera más sencilla posible. Los elementos de Texto: . tan pronto como escribiera otras nuevas. Si yo hubiera puesto Escribir archivo en la pestaña de Texto modificado en el elemento Editar texto. por lo que añadí esa demora. Mientras que hacer clic en el botón hará que se recargue la escena. Escribiendo "manzana" en el campo se traduciría en un archivo de la siguiente manera: mmamanmanzmanzamanzana Debo resaltar que lo difícil con las escenas es hacer que todo funcione en conjunto. y se ejecuta la tarea que activa la escena de nuevo (el que se describe al principio de esta sección). El botón de guardar también tiene un segundo uso. se destruye la escena. si no que no se podría haber utilizado la opción de anexar para añadir el texto al final del archivo. No sólo eso podría causar problemas para el sistema. habría escrito en el archivo cada vez que se pulsa una nueva letra. pero es bueno tener la opción. . cada uno de los tres elementos de texto contienen el texto almacenado en los archivos de texto. En otras palabras. Las etiquetas son estáticas.La parte inferior de la escena se compone de seis elementos de texto: campos que lista el contenido de las tres listas de tareas pendientes y las etiquetas correspondientes en la parte superior. En primer lugar. pero las listas son dinámicas. Estos se abren en cualquier aplicación establecida para la apertura de los archivos de texto. Muy rara vez he tenido que hacerlo. estas variables se actualizan. y esto es una forma muy rápida y sencilla de añadir una forma de editar las listas de tareas pendientes. cada lista tiene una variable como contenido del campo de texto. La acción Clic para cada elemento de texto en la parte superior abre el archivo de texto correspondiente. Cada vez que la primera tarea se ejecuta mediante la destrucción de la escena y de ejecutar la tarea de nuevo inicio. Son las variables que se crean por la tarea inicial que crea la escena. y guardan el contenido de cada una de las listas de tareas pendientes. ya que normalmente borro la lista entera de una vez. a continuación. La acción Menú técnicamente crea una escena. En el botón Guardar. Sí y No. y se reinicia/refresca utilizando el mismo método que con el botón Guardar. Hay dos opciones en esta escena Menú. mediante la acción Menú a la que antes me he referido brevemente. con la opciónAñadir sin marcar. que uno puede modificar. En primer lugar. en la acción Escribir Archivo está marcada esa opción Añadir . No destruye la escena Menú y. .La tarea Clic-largo para de cada elemento hace tres cosas. no en el editor de escenas. Esta escena-Menú me pregunta si deseo borrar la lista de tareas correspondiente. Si estuviera marcada esa opción Añadir (en la acción Escribir Archivo) ocurriría que el nuevo texto se añada al final del archivo. La opción Sí escribe un espacio en blanco en el archivo de texto de la correspondiente lista. Es más rápido cuando sólo tiene que crear una escena de diálogo rápido. pero se configura a través de opciones propias de la acción. la forma más rápida y sucia. pero en éste no lo está. si no esta marcada se sobrescribe el archivo sustituyendo todo lo que contuviera. dado que se supone que debe borrar la lista. continúa la tarea inicial del Clic largo: cierra la escena de Lista de tareas. se muestra una nueva escena de diálogo. como aquí. voy también a mencionar brevemente la parte de este sistema que no está relacionada con la . Si yo hubiera escrito nada en el archivo. la vuelve a crear para actualizarla. la escena “Lista de Tareas” será destruida. Como se explica en el artículo anterior. a continuación. como%Todoshopping. La parte no-escena de esta lista: Como sé que es un hecho que hay gente por ahí que trataron de hacer un sistema de lista de tareas como la mía y no lo consiguieron. no se mostrará como vacío en la escena. a continuación. las variables creadas por Tasker al iniciar la escena hubiera quedado en blanco. en cambio. una lista vacía. Si hubiera usado Eliminar archivos para eliminar el archivo. En otras palabras. Después de hacer clic en Sí. esto provoca que Tasker muestre literalmente el nombre de la variable en la que se utiliza la variable.Hay un par de razones por las que escribo un espacio vacío para el archivo de texto en lugar de escribir nada o eliminarlo. a continuación. Tasker me habría dado un error al intentar leer el archivo en una variable como parte de la iniciación de la escena. se mostrará el nombre de la variable. ¿Cómo se activa? Esta escena también es desencadenada por una tarea asociada a uno de los botones en el ejemplo 1. Como tal. Las tres acciones que le preceden son Obtener HTTP GET.T: enlace al artículo original referenciado. y debido a esto. no habrá ninguna notificación y no habrá mensaje. sólo se crea la notificación cuando hay algún elemento en la lista. Ejemplo 3: Escena con ventana virtual webcam: Mi ventana virtual ya fue tema de un artículo (N. pero el otro componente del rompecabezas es una forma de Tasker para verificar y actuar con base en ella. Si la lista está vacía. y mi mensaje de la mañana me informará de esto. Si la lista está vacía. El resultado final es que si la lista no contiene ningún elemento. Empieza por leer el archivo de texto que contiene la lista en una variable. pero no entré en muchos detalles. La acción 2 se asegura de que esta variable no contiene nada si la condición Si (If) no se cumple. El propósito de esta tarea es comprobar la lista de tareas por la mañana y notificarme si hay elementos contenidos en ella. la acción de Mostrar escena está al final de la tarea. que se utilizan para descargar . la variable contendrá sólo un espacio (como he explicado antes). Lo que hace esta escena es darle una interfaz para la creación y gestión de la lista de tareas. La acción 4 en la lista anterior crea una notificación con %Todomorning como texto. Esta tarea “Lista de por la mañana” se ejecuta como parte de una tarea mucho más grande que se ejecuta cuando me levanto por la mañana. %Todomorningnot se inserta en la acción Decir en la tarea principal de la mañana. Las acciones 2 y 3 no son muy relevantes. en inglés). Como resultado. Hago esto estableciendo la variable %Todomorningnot a "Hay artículos en su lista de tareas" usando la misma condición de la acción 4 anterior. lo cual es cierto cuando hay elementos reales de la lista. pero está limitado por esta condición Si (If). una notificación será creada. puede utilizar una instrucción If %Todomorning coincide con ++ para comprobar si hay algún elemento en el mismo.escena -por completar esta explicación. pero las voy a explicar en aras a no dejar ninguna pregunta. y quiero que el mensaje hablado que me sale cuando me levanto mencione si tengo artículos en mi lista de tareas. ++ Significa "al menos dos caracteres". La imagen de arriba muestra mi tarea “Lista de por la mañana”. pero no es cierto si sólo hay un espacio. La propia escena contiene imágenes que han de ser descargados de la web. Esta es una escena muy simple desde el punto de vista técnico. En este caso. Eso significa que al tocar cualquiera de las imágenes hará que la escena desaparezca. La opción Mostrar-Como es. cada uno de los cuales utiliza una de las imágenes descargadas de su fuente. crear una escena que -al hacer clic en un botón.las imágenes. Ejemplos 1-3 en la práctica: . Cada imagen también tiene como acción al hacer clic el Destruir-Escena. se mantiene el mismo diseño. por ejemplo. que tienen muchas aplicaciones.muestre nuevos cómics aparecidos hoy en la web. esta vez. Las imágenes han sido movidas y redimensionadas en el editor. La escena: La escena es tan simple como parece. pero la uso mucho. en realidad no importa. Cuenta con tres elementos de imagen. por lo que cada vez que se ejecuta la tarea sobrescribe las imágenes existentes. Usted podría. en otro caso la escena cargará las imágenes antiguas. las imágenes se guardan en una ruta específica. Superpuesta Bloqueada. y a pesar de que carga las imágenes recién descargadas cada vez que se muestra. Por eso es imprescindible que la acción Mostrar escena se ejecute después. También se muestra el uso de imágenes dinámicas. Como se puede ver en el vídeo... Ejemplo 4: notificación de Gmail: Los tres primeros ejemplos son todos usos bastante estándar para las escenas.layer_embedded . http://www. Todo comenzó con el deseo de añadir una notificación más visible para los correos electrónicos entrantes. Este no lo es. de tal manera que parezca como si sólo la parte de la pantalla con el logo se encendiera (que es en realidad lo que realmente sucede. sobre todo cuando hay muchas cosas que tienen que trabajar juntas. en inglés). Los píxeles negros son por lo tanto sólo la pantalla apagada... El vídeo a continuación es el resultado de esta idea.layer_embedded Los ejemplos 2 y 3 se activan con botones en el ejemplo 1.http://www. He experimentado con el uso del LED de la cámara. todo es muy simple cuando usted realmente sabe cómo quiere llegar a utilizarlo. como podría ser. y toda la magia que se hace con las escenas en Tasker. debido a la forma en que funciona la tecnología AMOLED). Mi Galaxy S II tiene una pantalla AMOLED..com/watch?v=BO7OD. Se me ocurrió la idea de tener un logotipo Gmail que se muestra en la pantalla.youtube. y funcionaba bien. por lo que decidí crear un solo vídeo para mostrar cómo funciona todo esto en la práctica. de una pantalla así es que el color negro se crea apagando los pixeles. y una de las ventajas (N. pero no era tan elegante . sin embargo.. de forma similar a los LEDs de notificación en algunos dispositivos.T: enlace al artículo original referenciado.youtube.com/watch?v=Mb2EH. Hay muchas cosas que van a hacer que todo en una escena funcione como debe. ¿Cómo se activa? Parte de lo que hace que este ejemplo sea tan especial es cómo se activa (o tal vez "cómo se controla" es una expresión más adecuada en esta situación). En primer lugar, esta escena se activa automáticamente mediante un perfil y un contexto. Cuatro contextos, para ser exactos. El principal es un contexto de evento para cualquier notificación de la aplicación Gmail. En otras palabras, este contexto se activa si Gmail recibe una notificación, que es sólo cuando se recibe un correo electrónico en mi caso. Este evento de notificación se ve filtrado mediante tres contextos de estado. La variable %Sleepmode no puede ser igual a "on", el perfil del hogar tiene que estar activo, y la pantalla tiene que estar apagada. El primero de estos es para evitar que el perfil se active cuando duermo. La segunda es para asegurarse de que sólo se ejecuta cuando estoy en casa (tengo un sistema diferente notificación de Gmail para otros sitios). El tercero es para asegurarse de que sólo se ejecuta cuando la pantalla está apagada, para que no interfiera conmigo cuando estoy utilizando el dispositivo. Ahora veamos la tarea que crea la escena. La primera acción muestra la escena Notificación Gmail, que es el logotipo de Gmail en un fondo negro. El tipo de pantalla esSuperpuesta bloqueada, a pantalla completa. La segunda acción es otra Mostrar-escena, esta vez para un escenario completamente negro, con el tipo de pantalla deActividad a Pantalla completa, y sin título. ¿Por qué dos escenas? En mis pruebas, me di cuenta de que (en mi dispositivo y ROM, esto podría muy bien ser dependiente del dispositivo) el tipo de pantalla Superpuesta no era capaz de girar en la pantalla de mi dispositivo. El tipo de pantalla de Actividad sí lo hace, pero su definición de pantalla completa no incluye la barra de estado, dejándola visible. Mediante el uso de dos escenas - uno de cada tipo - me las arreglé para conseguir un escenario donde la escena se enciende la pantalla, y que en realidad cubre toda la pantalla con un recuadro negro, es decir, los píxeles se quedarán apagados en una pantalla AMOLED. Después de crear este sistema, he rooteado mi dispositivo, y ahora podría usar el plugin Secure Settings para despertar el dispositivo. Sin embargo, yo no tiendo a arreglar algo que no está roto, y el método descrito (sin root) es el mejor ejemplo de cómo se pueden utilizar las escenas de manera creativa. La acción 3, es una acción Espera que decide cuánto tiempo la pantalla permanecerá encendida (como la acción 5 en el bloqueo del sistema). En el logotipo de Gmail se puede hacer clic y eso te llevará a la aplicación de Gmail, por lo que la acción 4 está ahí para evitar que el resto de la tarea se ejecute (y al hacerlo, apague la pantalla) si en efecto hace clic en el logo. Más adelante veremos la variable que la acción de Detener usa como condición Si (If) cuando se hace clic en el logo. La acción 6 es una espera de nuevo, esta vez para asegurarse de que la animación de la pantalla de bloqueo tiene tiempo para terminar antes de que las dos escenas se destruyen con las acciones 7 y 8. Cuando todo esto trabaja en conjunto, se obtiene el resultado en el vídeo de arriba. La escena: Las dos escenas aquí no son muy interesantes en sí mismas. La escena Notificación Gmail tiene el logo de Gmail, y eso es todo. Sin embargo, hay bastantes pocas acciones vinculadas a la tarea cuando hago Clic para la imagen. En primer lugar, se establece la variable %Gmailactive, que a su vez controla la acción de parada que he mencionado anteriormente. Entonces destruye las dos escenas utilizadas para crear la notificación. A continuación, se carga la app de Gmail, lo que me permite leer el correo electrónico que en entró. Finalmente, espera 6 segundos, y luego borra la variable %Gmailactive, reiniciándola para la próxima vez. Como he dicho, este es un uso bastante peculiar de escenas, pero también es una de mis configuraciones favoritas en Tasker. Cuando estoy en casa, mi teléfono está normalmentecolocado en un dock en mi escritorio, con la pantalla apuntando hacia mí, así que tener una notificación visible es estupendo. La posibilidad de limitarla a cuando estoy en casa y cuando no estoy usando el teléfono hace que sea mucho más útil. Para que conste, cuando no estoy en casa, en lugar de esta configuración, la notificación cambia a tres vibraciones deun segundo. Ejemplo 5: Bloqueo de pantalla con escenas http://www.youtube.com/watch?v=JNtne...layer_embedded El segundo problema con el uso de Pantalla apagada es que usted puede tener una pantalla de bloqueo de seguridad (por ejemplo. Esto puede parecer al revés. A continuación. en inglés) creando una pantalla de bloqueo con el uso de escenas.Los ejemplos anteriores han sido de mi propia configuración de Tasker. Como veremos más adelante. es posible arreglarlo a medias si agregamos un perfil que se dispara con el contexto Pantalla Encendida. obtendrás una escena que aparece rápidamente. Mostrar la hora es útil para comprobar rápidamente la hora encendiendo la pantalla. ¿Cómo se activa? Ya que estamos hablando de una pantalla de bloqueo. pero eso solo vale si la escena se crea al mismo tiempo. y podrían luego estar desfasados cuando se enciende de nuevo. Sin embargo. Este método sin embargo también tienen sus desventajas. que resulta en un "reloj estático" que muestra la hora en que la escena fue creada (pero no cambia por si misma). y que se actualiza después de una fracción de segundo. pero con los datos erróneos. La alternativa es dispararlo con el contexto Pantalla apagada. lo lógico sería hacer que se active al encender la pantalla.T: enlace al artículo original referenciado. y lo utilizamos para actualizar los elementos relativos al tiempo. usted consigue este efecto de retraso cuando se utiliza ese contexto . Para éste último que voy a cumplir una petición de un lector de un artículo anterior (N. no si se muestra la hora de cuando la pantalla se apagó. pantalla de patrón de desbloqueo) por debajo deesta pantalla de bloqueo creada en . En primer lugar. por lo que se visualiza con mayor rapidez. ya que toma unos pocos milisegundos para mostrar la escena. con escenas y sistemas que conozco bien. he añadido un elemento de texto simple con %TIME como el texto de la pantalla de mi prueba de bloqueo.por lo menos en mi antiguo Galaxy S II. pero la ventaja es que la escena está preparada para mostrarse al encender la pantalla de nuevo. todos los elementos de la escena se habrán creado cuando la pantalla se apaga. El problema con esto es que. con el contexto de evento Pantalla encendida. mediante el uso de diversas acciones en la categoría de acciones de la escena. he añadido una imagen estática de mi perro. en la escuela. en resumen. añadiendo en la tarea una acción de bloqueo del sistema después de la acción Mostrarescena. así que cuando se bloquea la pantalla. en inglés). como he explicado anteriormente. más se tiene que actualizar utilizando un segundo perfil si usted elige la opción Pantall-apagada para activar la escena. Y a continuación. Ahora es donde comienza la diversión! Hay bastantes cosas que usted puede hacer para crear una pantalla de bloqueo en Tasker.T:enlace al artículo original referenciado. si eso es lo que quiere. Ya que no voy a utilizar este sistema de bloqueo de pantalla yo mismo. terminar con un bloqueo de pantalla que parpadea brevemente cuando se enciende la pantalla. Creación de un escenario de bloqueo de pantalla. Mucha gente. sin embargo. ambos métodos tienen problemas. Con un tamaño de texto de gran tamaño hace que se vea como un widget. en las afueras. salvo que seas muy exigente. A continuación. y utilizarlos para controlar qué escena se muestra es tan fácil como tener múltiples acciones de Mostrar escena con condiciones Si (If). Si yo fuera a utilizar realmente esto. (¿? "Unfortunately. it will create a scene that turns the screen back on. todo lo que tienes que hacer es vincularla a una tarea que se ejecute con tu contexto preferido.") Usted también puede medio solucionar este problema. por lo que he visto de la respuesta del desarrollador a comentarios de los usuarios. Pantallas de bloqueo dependiendo de la situación: Si bien no voy a sustituir mi pantalla de bloqueo de WidgetLocker por este sistema. A pesar de ello. el uso . sin embargo. se destruye la escena y la pantalla se "desbloquea". sólo para llenar la pantalla. en tal caso. añado texto estático para mostrar correos electrónicos nuevos al lado del icono. Sólo recuerde que a más dinámico el contenido que desea añadir. y así sucesivamente. Por último. Añadir un contador de correo electrónico real o contador de SMS no es un problema (N. tiene perfiles para distintos lugares y situaciones. así como una acción de Destruir-escena para cerrar la pantalla de bloqueo antes de hacerlo. cualquier escena de diálogo también se convierte de nuevo en la pantalla. por supuesto. Usted puede crear fácilmente múltiples escenas para diferentes ocasiones. dependiendo de que esté en casa." Es un elemento de texto simple con %TIME como texto. Usted también tiene %DATE (fecha). se creará una escena que convierte la pantalla de nuevo. y el resultado final puede ser bastante impresionante. A continuación he añadido un logo de Gmail mediante la inserción de un elemento de imagen y el uso del logo aplicación Gmail. hay una ventaja de este sistema de escena que me hace estar muy tentado de usarla: Tener pantallas de bloqueo dependiendo de la situación. Así que. es necesario utilizar la visualización de tipo diálogo para hacer que pantalla de bloqueo de Tasker esté en la parte superior. He añadido una acción para abrir la aplicación Gmail como una acción de Clic. Desafortunadamente. habría utilizado el resto del espacio para otra cosa. No puedo entender por qué WidgetLocker no tiene perfiles. any dialog scene also turns the screen back on. y un montón de otras variables integradas para ayudar a poblar su escena pantalla de bloqueo. el trabajo. %BATT (batería). Empecé poniendo un control deslizante.Tasker. La fracción de segundo que tienes que esperar cuando se utiliza la pantalla del contexto no es una opción mala. so when you lock the screen. para moverel deslizador (o el pulgar como Tasker lo llama). Luego me fui a la pestaña de Valor seleccionado y añadíuna acción Destruir-escena con la condición Si(If) %new_val es mayor que (>) 90. y llevarlo de 0-100. pero no hay muchas esperanzas al respecto. agregué el "reloj. yo incluido. Una vez que la escena está preparada. ¿Por qué? Para desbloquear deslizando! Al mover el deslizador más a la derecha del 90%. como la información del propietario y otras preferencias personales. Como te habrás dado cuenta. con un mayor énfasis en ejemplos que en la teoría. y así sucesivamente y así sucesivamente. El procesamiento de datos en variables.de escenas como las pantallas de bloqueo no se ha llegado todavía. Tasker para principiantes. El locutor de eventos del calendario y el sistema de anuncios meteorológicos son ejemplos de procesamiento de datos variables. lo cual es algo que abre toda una gama de nuevos usos para Tasker. Se trata de tomar algunos datos -texto.T: que me lo digan a mi !!!). Mediante el procesamiento de datos en variables me refiero a cómo se puede trabajar con los datos almacenados en las variables. Es más bien una característica implícita de los temas anteriores. creando sus propios contextos. esta ha sido una parte muy larga de la guía (N. es el momento de profundizar en algo un poco más específico: Procesamiento de datos utilizando variables. extraer información de ello. En mi Tasker tengo varios perfiles y tareas que utilizan esta característica. pero es un buen término para referirnos a este aspecto de Tasker. Obtención de datos externos y su tratamiento para extraer la información que necesitamos. si usted me pregunta. en otras palabras. desde la obligación de pre-carga de datos antes de crear una escena a usar varias escenas para combinar sus ventajas. hay un montón de cosas de menor importancia aquí y allá. Para terminar. Lección 4. y algunos de ellos han sido publicados antes. pero está ridículamente cerca de algo que no fue diseñado para ello. las variables en general y las escenas ( http://www.com/showthread. . ¿Procesamiento de datos en variables? En cierto modo estoy inventando esta expresión. sin embargo.php?p=8821039 ). Una vez vistos los conceptos básicos.htcmania. que hace cada escena única. Eso es simplemente porque la característica de escena tiene tanto potencial que creo que es más fácil entender cómo funciona viendo ejemplos de la vida real.y trabajar con ellos hasta que usted consigue lo que necesita. pero también es (en mi opinión) una de las características más poderosas de Tasker. La siguiente parte de la guía se referirá a los datos de proceso con variables. ya que le permite cargar páginas web en variables. lo que mostrará lo que el ordenador ve: la página web en forma de texto puro. artículos. tareas relacionadas con contabilidad.  Captar-voz se usa para escuchar para la entrada de voz. ya que es el más difícil de trabajar. Sin embargo. igual que si utilizamos HTTP Get y luego Leer-archivo. HTTP-Get. Más o menos cualquier cosa que se almacena en forma de texto se puede utilizar en Tasker. Pero tiene sus peculiaridades. Si ve algún texto. en algunos dispositivos. pero como se verá más abajo. etc. horóscopos. HTTP Get HTTP Get (que se encuentra en la categoría de acciones de Red) es quizás la acción de recogida de datos más versátil. una mezcla de referencias a imágenes. y el más poderoso. en los ejemplos nos centraremos en los datos recopilados con HTTP-Get. y eso también son dos acciones. si se sabe manejar. Sin embargo. Una página web es vista por el ordenador como texto puro. %HTTPD simplemente no contiene los datos correctos (o cualquier otro dato) después de usar HTTP Get. textos. los documentos de texto. una solución excelente es usar HTTP Get con la opción de guardar el resultado en un Archivode-salida. fases lunares. ¿Quiere crear un perfil que se active cuando su horóscopo cite la palabra dinero? No hay problema. lo que sea. archivo. Esto se verá así en varios ejemplos a continuación. etc. Los datos meteorológicos. etc. noticias locales. verá varios campos. pulsar CTRL+U nos lleva al “código fuente” de la página.Fuentes de datos Para entender realmente el poder de procesamiento de datos variables primero tiene que darse cuenta de cuántas posibles fuentes de datos hay por ahí. es así de simple. Por otra parte. normas sobre cómo diseñar la página.  HTTP-Get se utiliza para obtener (el texto de origen de) una página web y colocar su texto en la variable %HTTPD. Hay muchas maneras de hacer esto. para que podamos trabajar con ella. En estos casos. Captar-voz y Consulta-de-variable. Esta es la base de un asistente de voz casero como mi Nelly. Son fuentes potenciales de datos las páginas web. El caos de texto que te saluda cuando nos fijamos en la fuente puede ser aterrador al principio.  Consulta-de-variable muestra un cuadro de diálogo pidiendo un valor variable. La lectura de datos en variables La primera parte de cualquier sistema basado en fuentes de datos externas es poner los datos en una variable. En teoría. seguida de otra acción Leer-archivo que pase el texto a una variable. se carga el contenido de la página web en la variable incorporada (interna) %HTTPD.  Leer-archivo lee un archivo almacenado en la memoria interna y coloca su texto en una variable. que luego se convierte en texto y se almacena en la variable %VOZ. como el mío. lo más probable es que pueda utilizarlo en Tasker. pero algunas de las acciones más relevantes son Leer-archivo. los datos del calendario. normalmente necesitaremos tenerlos en variables de usuario. también puede ser de gran utilidad. . para trabajar libremente con los datos. aunque debo señalar que la forma correcta de hacer las cosas (cuando funciona bien) es el uso simple de HTTP Get para llenar directamente la variable %HTTPD. En la pantalla de configuración de HTTP-Get. los dos primeros son del servidor: Puerto y Ruta. También es importante entender la diferencia entre lo que ve y lo que un ordenador ve. En la mayoría de navegadores. Excelente para cosas como entradas rápidas para la lista de tareas pendientes. lo que significa tener que copiar el contenido de %HTTPD a otra variable. txt) y luego use la acción Leer-archivo para obtener la información de ese archivo. es buena idea tener el código fuente (CTRL+U) de la página a la vista.com Ruta de acceso: 2012/09/beginners-guide-to-tasker-part-3-scenes. se encuentran en la categoría de variable. usted acaba de conocer la acción más importante que existe para este tipo de configuración de Tasker.html En teoría. tras ejecutar la acción. para obtener una mejor perspectiva de lo que hay en la variable de Tasker. Por ejemplo. y el resto en la casilla de Ruta. la URL http://www. A menudo. especialmente si carga las páginas web enteras en una variable. Si eso no ocurre.Como regla general. Siempre es una buena idea hacer estas configuraciones de Tasker delante de un ordenador. Separar-Variable bien podría llamarse Rebanar-variable o Despiezar-variable.html Se dividiría en estos dos campos: Servidor: Puerto: http://www. por ejemplo.com/2012/09/beginners-guide-to-tasker-part-3-scenes. No voy a describir todas las posibilidades. porque lo que hace es que separa el contenido de una variable en partes más pequeñas. comenzaremos con el trabajo para utilizarlos. utilice el campo Archivo-de-salida para guardar el texto en un archivo (por ejemplo pocketables. en la casilla del Puerto pondremos el dominio (como por ejemplo . Separar-variable Felicidades. Cuenta con dos campos de configuración relativamente simples: Nombre y Separador.pocketables. pero sí las más importantes. Todas son acciones que manipulan el contenido de una variable. Si está trabajando con una página web. ySeparador es el carácter o expresión que se usa como referencia para dividir el contenido de la variable. la variable se convierte en un barullo de texto. y como tales. el contenido de esa URL debe quedar en %HTTPD. de modo que usted pueda tener el texto completo delante. . Nombre es el nombre de la variable que desea cortar en trozos. A continuación voy a explicar algunas de las herramientas más comunes que se utilizan trabajando con datos.pocketables. Herramientas de procesamiento de datos Una vez que tenemos los datos en una variable.COM) y cualquier otra cosa que le preceda. Vas a verme hacer esto en el vídeo del ejemplo 2. echemos un vistazo a pocketables.) como separador. Tasker ve este código cuando se carga una página web en una variable como esta. y en este caso. hará que la "motosierra" se dirija a todas las comas y cortará el texto en esos puntos. Pulsando CTRL+F en un navegador de ordenador. con los títulos y sus enlaces. vemos que el enlace a cada artículo está inmediatamente precedido por <h3><a href=". lo que significa que sólo se usa antes de cada uno de los diez artículos en la página principal. o separar un sitio de noticias para usar los titulares. Este método es el alfa y el omega del procesamiento de datos en variables. y usando la búsqueda de <h3><a href=" en el código fuente. Al elegir los separadores correctos puedes cortar variables enormes que contienen las páginas web enteras. Como se puede ver en la imagen de arriba. Cargamos la página en la variable %Pocketables. Así. y por lo tanto el número de variables secundarias será uno más que el número de apariciones del separador). Si hubiera 175. Con mucha frecuencia podemos usar como separadores las etiquetas que se utilizan para asignar formato a partes específicas de una página web. Queremos que el separador sea lo más exclusivo posible. Si hubiera 20. Todo lo cual es una ventaja.com. Supongamos que queremos crear una lista de los artículos que aparecen en su página principal. Aquí es donde resulta útil todo el texto "raro" que hay en una página web. veremos que hay sólo 10 apariciones. Como ejemplo. <h3><a href=" nos daría 11 variables "secundarias" (la primera sub-variable contendría lo que hay antes de la primera aparición del separador. En el caso del ejemplo. ya que podemos utilizar estas etiquetas como separadores. vemos cómo cada artículo aparece en el código fuente: Las etiquetas (como <h3>) que hay en ese texto son las que le dicen al navegador cómo mostrar la página normalmente. usar una coma (. Puede separar una página web meteorológica para obtener solo el pronóstico del tiempo. esto sigue siendo un texto mucho mayor de lo que queremos: . obteniendo trozos más pequeños y manejables que contienen sólo la información que necesitamos.Por ejemplo. conteniendo cada una un trozo del texto inicial. Encontrar un buen separador es algo fácil si se tiene la fuente en un ordenador junto con CTRL+F (buscar texto en la página). digamos que usted tiene una variable %Aficiones que contiene el texto "fútbol. En ese caso. la variable %Pocketables4 contiene todo el texto entre las apariciones <h3><a href=" número 4 y <h3><a href=" número 5.hockey. lo que nos permite coger de la página web las partes que nos interesan. En este caso. Los separadores se destruyen en el proceso.natación". Poniendo esa fuente en un navegador (que es también lo que hay en %Pocketables). se puede suponer que fue utilizada dos veces para cada artículo. podríamos suponer que fue utilizado con otro criterio. Esto crea nuevas variables derivadas de la original y que están numeradas. se llega a las siguientes variables: %Aficiones1: fútbol %Aficiones2: hockey %Aficiones3: natación Usted acaba de utilizar las comas como puntos para separar una sola variable en pequeñas partes individuales. Estamos entonces a la izquierda con un hijo de tercera generación. Los tres fragmentos de texto rojo son los distintos separadores usados. la dirección URL es seguida inmediatamente por " title=".. el azul es el hijo de segunda generación (%Pocketables41 en el ejemplo). separamos %Pocketables42 utilizando el separador "> . si cada variable hija se divide de nuevo utilizando este separador. %Pocketables42 contendrá entonces todo lo que hay después de " title=" hasta el final de la original %Pocketables4. En resumen. he aquí un fragmento de código con las partes pertinentes resaltados.com/2012/09/tv-show-favs-for-android-hits-version-3-0.. como se puede ver. Esta variable comienza con el título del artículo. %Pocketables421. Un ejemplo de este tipo de variable sería %Pocketables41. la primera de las variables hija de segunda generación contendrá la URL. Usando el mismo método que hemos hecho para obtener la URL. Por ejemplo. y sólo la URL. Esto significa que. que es el texto que va a continuación del título.html" title="TV Show Favs para Android accesos versión 3. que contiene sólo el título del artículo. El texto al final es sólo una versión abreviada de toda la basura que hemos cortado.pocketables. y luego añade un montón de "basura" final. podría tener una acción Abrir-URL con %Pocketables41 en el campo de dirección URL y una acción Decir con %Pocketables421 en el campo de texto: de esa forma Tasker abre una URL al tiempo que vocaliza el título de la página que está abriendo.Sin embargo.0">TV Show Favs para Android accesos versión 3. se van cortando los datos en los trozos adecuados y se obtienen variables que se pueden utilizar directamente en otra parte. sino más bien la primera variable hija de la variable %Pocketables4. . y púrpura/rosa es el hijo de tercera generación (%Pocketables421). <h3><a href="http://www. Esta no es la variable hija número 41.0</a></h3> Al utilizar este método de división simple. Como he dicho. que precede directamente al título que buscamos. Además. que son esencialmente variables básicas con variables hijas. lo que complica mucho más el asunto. no voy a entrar ahora en el uso detallado de matrices. es aconsejable utilizar las variables locales (letras minúsculas) para este tipo de trabajo. Por ejemplo. El esquema de nomenclatura creado en el ejemplo no tiene este problema. el método manual a menudo puede ser más fácil para entender lo que se está haciendo. usted no querrá que su valor sea sobrescrito al crear la variable de segunda generación %Pocketables11. Eso. y así sucesivamente. %Pocketables11 puede ser el hijo 11 (undécimo) de %Pocketables o puede ser el primer hijo de %Pocketables1. Debo señalar que es posible automatizar el proceso de división de múltiples variables múltiples veces. es posible especificar un conjunto de acciones que se ejecutarán para cada variable de la matriz. por lo que se debe jugar cuidadosamente con los separadores utilizados para las divisiones. También debe tenerse en cuenta que si se divide en más de 10 partes. las variables de segunda generación comenzarán a tener el mismo nombre que las variables de la primera generación. para no abrumar innecesariamente la lista de variables de Tasker. y conviene recordar que cada división crea variables que usted no necesita. Sección-de-variable . Así. todos los hijos de %Pocketables. A menudo es complejo hacer un seguimiento de todas las variables hijo. además resulta que algunos de los separadores comunes en las páginas web a menudo varían en número según la página se actualiza. en el ejemplo anterior. mientras se está trabajando con esto. que podría ser adecuado si es necesario usar esas variables en otras tareas. usted tendría que hacer este proceso de división 10 veces con el fin de obtener separadamente la información de los 10 artículos referenciados en la página. utilizando bucles que usen una acción para cada variable específica. Por lo tanto. Mi consejo es seguir con el "método manual" hasta que se haya dominado. a menos que usted está usando una exagerada cantidad de variables. como por ejemplo. combinado con CTRL+F para buscar texto hace que sea mucho más fácil "cortar por los lugares correctos". %Pocketables2. Sin embargo. es una buena idea tener abierta en el ordenador una versión del texto que se está dividiendo. Tras eso. A veces es más prudente separar varias veces con el fin de crear variables hijas bien numeradas en vez de tratar de obtener el resultado en pocas divisiones. para obtener el título se podría haber utilizado el separador " title=" . Esto supone una gran cantidad de acciones y una gran cantidad de variables. Si la variable %Pocketables11 de la primera generación es importante. He utilizado variables globales en el ejemplo. Esto se hace mediante el uso de matrices. pero hay que ser conscientes de los efectos secundarios y tomar una decisión adecuada. La variable %Pocketables anterior es una matriz que contiene %Pocketables1. Esto no sólo es más difícil de tratar que un esquema de nombres estático.En este caso. que podría complicar más un asunto que ya es complejo. Sin embargo (en el momento de escribir estas líneas) ese separador aparece 99 veces lo cual es un problema porque genera 100 variables hijas de primera generación. 000-04. elegir 7 caracteres permitiría extraer la palabra "manzana" completa. como por ejemplo si se tratan de extraer diez caracteres cuando la variable solo contiene cinco. La opción Encajar hace que la longitud del texto seleccionado se reduzca automáticamente en el caso de que se acabe el contenido de la variable antes de lo previsto. %tiempoparcialx a %tiempoparcial1:%tiempoparcial2. respectivamente. que contendrían respectivamente 13 . El segundo es Desde. Almacenar-resultado-en permite guardar el resultado en una variable diferente a la que tenía el texto original. digamos que usted desea obtener el tiempo (horas y minutos) de una variable cuyo contenido sea de este tipo: 13:30:52. y así se terminaría con un % tiempoparcialx que contendría 13:30. Bien pero ¿para qué sirve esta función? Es excelente para eliminar caracteres innecesarios que están al principio de las variables. Luego se podría volver a montar el tiempo con una acción Establecer-variable. .000-04:00 Claro. Usted podría terminar con las variables en forma de %tiempoparcial1. hay que poner 4 aquí. usted podría separar utilizando los dos puntos como separador. por ejemplo. o bien porque habría que usar un separador de aparición tan frecuente que también fragmentaría datos que no queremos separar. Por desgracia no funciona en base a separadores. 30 y 52.La acción Separar-variable puede ser la herramienta más importante para este tipo de trabajo. La pantalla de configuración de Sección-de-variable dispone de cinco opciones a considerar. sino en números de caracteres. si desea omitir las tres primeras letras de una variable. Por último. que indica a partir de cuál número de carácter hay que comenzar a extraer el resultado. A menudo esto ocurre porque resulta imposible separar las variables por la razón de que esos textos son distintos en cada aparición. pero no es la única. Otra gran ayuda es la acción Sección-de-variable. pero eso también separa los minutos de las horas. que es simplemente el nombre de la variable que desea seccionar. por ejemplo. Por ejemplo. La primera es el Nombre. La Longitud establece el número de caracteres que se van a incluir en el corte. lo cual es muy conveniente si no sabemos de antemano la longitud del texto inicial. %tiempoparcial2 y %tiempoparcial3. que está diseñada para obtener una parte específica de una variable y tirar el resto por la ventana virtual. no funcionará: Tasker no usará el contenido de la segunda variable sino que utilizará directamente su nombre como si se tratase de cualquier otro texto.3 y ahí resolvió lo que el autor de este documento menciona a continuación como “segundo problema”. Debido a esto. En pocas palabras. y finalmente decido mantenerlo en el documento por fidelidad al texto original (escrito en septiembre de 2012) pero en realidad el párrafo ha quedado obsoleto y por eso le he degradado el color. en este momento la acción Buscar-y-reemplazar es como el patito feo de la caja de herramientas de Tasker. Según el desarrollador de Tasker esto está en la lista de tareas para arreglar desde hace varios meses. pero es una alternativa que a menudo le puede ahorrar un montón de trabajo. y no tiene experiencia usando expresiones regulares reales. . pero te daré un pequeño ejemplo de cómo se puede usar en algunos casos. sino que utiliza expresiones regulares reales. El primer problema es que no utiliza el sistema estandarizado de Tasker para coincidencia de patrones. Esto será una complicación grave si está acostumbrado a la coincidencia de patrones para las condiciones Si (If). y tengo sentimientos encontrados respecto a ella. el desarrollador de Tasker actualizó a la versión 1. y todavía está pendiente de convertirse en un hermoso cisne. para utilizar un comodín no hay que poner * . pero todavía no ha sido resuelto. yo no quiero perder mucho tiempo con este asunto. Debe saber que es otra opción que puede ser muy útil. Buscar-y-reemplazar La acción Buscar-y-reemplazar es una característica relativamente nueva. En noviembre de 2012. En teoría. Ya no hay tal “segundo problema” ni para esa versión ni para las siguientes] El segundo problema es que Buscar-y-reemplazar no es compatible con variables. debería ser muy útil reemplazando fragmentos de variables en diferentes circunstancias. Si usted tiene una variable y dentro de ella pretende buscar las coincidencias con el contenido de otra variable. la Sección-de-variable es una alternativa a Separar-variable. Así. sino . [Nota del traductor: he dudado si debía omitir el siguiente párrafo. En muchos casos.O bien se puede usar directamente la acción Sección-de-variable a partir del 1 carácter con una longitud 5 y así se obtiene 13:30 de inmediato. se trata de una característica que francamente todavía está en fase beta.* (hay que añadir un punto justo antes del asterisco). En la práctica. http://www. porque al menos sé dónde lo tengo en lo que respecta a la sintaxis de coincidencia de patrón y el soporte de variables.*" Esta sería la búsqueda de cualquier mención de <h3><a href=". Hay dos versiones disponibles.UU. Podemos usar Sección-de-variable a partir del carácter 1 con una longitud de 13 para deshacerse del principio. CA/San_Francisco y Norway/Hamar . abrirlo una vez descargado y. En el campo Ruta.wunderground.html" El comodín equivale aquí a la dirección URL.*). que hemos "cercado" al colocar un comodín en la cadena entre dos piezas que lo delimitan. Abra la tarea y busque la acción HTTP Get. Ejemplos de ello son 90210. seleccionar "guardar enlace".youtube. pero debido a la longitud variable de la URL. descargue el . Ejemplo 1: Previsión del tiempo Preparación Esta es la versión “how-to” (cómo hacerlo) de la tarea que publiqué en este otro artículo ( http://www. Esto puede ser un código postal de EE. nos quedamos con tres acciones de todos modos. obtuvimos la URL mediante la división en múltiples ocasiones. y terminando con un ". lo que significa que no es infinitamente superior a Separar-variable.pocketables. Originalmente fue publicado como una tarea lista para ser descargada por cualquiera sin entender cómo trabaja. Números aleatorios o cualquiera de los ejemplos utilizados aquí no van a servir en la vida real. Por lo tanto. es necesario Buscar-y-reemplazar o bien Separar-variable usando el separador " para deshacerse de él.zip y descomprímalo de forma manual en la carpeta Tasker/tasks. y " es necesario para detener la inclusión de absolutamente todo lo que sigue a la URL. Usted puede obtener una clave de forma gratuita mediante la firma de Wunderground:http://www.html ) y que dice el pronóstico del tiempo.XML. y elija Importar. Así.com/2012/07/tasker-task-that-speaks-the-weather-forecast-download. A continuación. cambie XXXXXXXXX por una clave de API Wunderground. Estado/Ciudad o País/Ciudad.com/weather/api/ Esto no va a funcionar sin la obtención de su propia clave API. sustituya el dato YYYYYYY por su ubicación. hacer una pulsación larga en la descarga . seguido del comodín no-estándar (.XML y una versión comprimida ZIP. seleccione abrirlo con Tasker. en Tasker. Descargue la tarea con el enlace que hay más abajo. Esto devuelve resultados (variables para cada situación) del tipo siguiente: <h3><a href="http://www.pocketables. nos encontramos con alguna información basura en el comienzo y el final. . Seleccione la tarea Weather.incluyendo las barras.En el anterior ejemplo de la página principal de Pocketables. puede ir a esa página con el navegador. una pulsación larga en la pestaña de Tareas. Los resultantes son idénticos utilizando ambos métodos. Usted podría conseguir lo mismo usando Reemplazar Buscar variables y la cadena de búsqueda siguientes: <h3><a href=".com/2012/09/tv-show-favs-for-android-hits-version-3-0. En algunos dispositivos.com/watch?feature=player_embedded&v=As3Q1EHow5Q Luego. Personalmente yo uso Separar-variable casi exclusivamente. Si eso no funciona. pero ahora voy a usar este ejemplo para explicar cómo funciona en todo detalle.. una descarga directa . a continuación. Tenemos que usar<h3><a href=" aquí con el fin de capturar las direcciones URL que están a continuación (no todas las URL en el código). Asegúrese de que no hay espacios u otras "irregularidades" al insertar el API. El campo Ruta resultante debe ser algo así: api/123a123b123c/conditions/forecast/q/Norway/Hamar.xml El texto en negrita indica las partes que debe reemplazar. Por último, entra en la acción Decir, haga clic en la lupa al lado del motor de voz y seleccione un motor de texto a voz que tenga instalado. Tarea de descarga Descarga:Weather.tsk.xml Descarga:Weather.tsk.xml.zip Explicación Acciones 1-2: Los datos del tiempo están disponibles en línea en formato XML, que podemos tener en nuestras manos utilizando http-Get. Como he explicado antes, prefiero hacer HTTP-Get en un archivo local y luego leer en una variable con la acción Leer-archivo en lugar de utilizar la variable %HTTPD generada por HTTP-Get. Tras la acción 2, el resultado es que usted tiene una variable %Weather que contiene todo en el archivo XML. Acción 3: Esta es la primera acción Separar-variable. Para entender este punto, usted debe tener el archivo XML abierto en un navegador completo (o editor de texto) con el fin de ser capaz de ver lo que hay en ese archivo. Si al abrir en el navegador aparece un mensaje RSS, pruebe a pulsar CTRL+U (mostrar fuente) en la página. El separador usado por primera vez aquí es <fcttext><![CDATA[ . Este separador es elegido para llegar lo más cerca posible de la descripción del tiempo, lo que verás si buscamos en el texto de origen. Tenga en cuenta que algunos navegadores "organizan" las etiquetas de tal modo que no será capaz de encontrar este separador específico mediante la búsqueda. Si eso ocurre, busque sólo la primera parte del separador (hasta >), o simplemente vea la siguiente captura de pantalla (haga clic para ampliar la imagen): Como se puede ver, el primer pronóstico sigue inmediatamente después de este separador. Esto significa que la variable %Weather2 contendrá la previsión y añadirá un montón de texto-basura, mientras que %Weather1 es todo el texto basura previo a la división. Pero eso no es todo. Puesto que todas las previsiones se "etiquetan" de la misma manera, también se crearán %Weather3, %Weather4 y así sucesivamente. Estos contienen datos del tiempo para períodos futuros, de forma similar a como %Weather2 contiene la previsión del próximo período. Una vez más, %Weather1 es sólo texto basura. Nota: Si no desea la previsión con el sistema imperial sino con el sistema métrico, utilice el separador <fcttext_metric><![CDATA[ . Esto hará que se usen unidades como kmh en lugar de mph. Usted puede ver la lógica de esto estudiando la captura de pantalla anterior. Acciones 4-5: Se trata de dos acciones Separar-variable usando ]]> como separador, una para %Weather2 y otra para %Weather3. Simplemente cortan el texto basura que hay al final de estas variables, dejando en ellas el pronóstico del tiempo y nada más. Esta versión particular de la tarea utiliza la información de pronóstico para los dos próximos períodos, y por eso estamos limpiando %Weather2 y %Weather3, pero no necesitamos limpiar %Weather4 ni otras variables siguientes. Si desea más períodos, sólo tiene que añadir más acciones Separarvariables como éstas para obtener más variables %WeatherX, y utilizar sus primogénitos %WeatherX1 en acciones Decir, al final de la tarea. Acciones 6-10: Técnicamente, ya está recibiendo la información del tiempo después de las acciones 4-5. A continuación, tiene %Weather21 y %Weather31 que puede usar como quieras, ya sea en una acción Decir para dar un pronóstico hablado o tal vez para enviar a un widget Minimalistic Text para mostrar en alguna parte. Sin embargo, las acciones 6-10 son para averiguar si la segunda de las dos previsiones futuras es por la noche o por la mañana. Esto es básicamente una característica de lujo que no es estrictamente necesaria, pero la he añadido originalmente para hacer todo más "profesional". Utiliza también Separar-variable, así que voy a explicar cómo funciona. La acción 6 copia el contenido de %Weather2 en una nueva variable, %Nforecast. Vamos a separar %Weather2 con nuevos separadores, y no queremos sobrescribir las variables hijas ya existentes, por lo que estamos haciendo una copia para evitar este problema. La acción 7 es Separar-variable para %Nforecast con <title> como el separador. Recuerde que %Weather2% (del que es copia %Nforecast) es ya un hijo, por lo que hay que buscar el separador en una parte ya limitada del documento original. Por lo tanto, sólo hay un <title> en %Nforecast, a pesar de que hay muchos en el texto fuente original. A continuación, para mostrarlo, he marcado de rojo las partes que no están en %Nforecast. Esto se traduce en una división de %Nforecast2 que contiene el título del segundo período de pronóstico, así como un cubo de basura al final, tras </title>. La acción 8 elimina de %Nforecast2 este </title> por división. Esto crea una %Nforecast21, que contiene el título del segundo período de pronóstico. La acción 9 crea una variable %Nextforecast y lo establece en "tomorrow" (mañana). La acción 10 sobrescribe la variable creada en acción 9 con el texto " tonight" (esta noche) Si(IF) %Nforecast21 coincide con *night*/*Night*. Esto significa que si el título del segundo período del pronóstico contiene la palabra "night" (noche), el valor de %Nextforecast será " tonight". Si no contiene esa palabra, permanecerá el valor establecido en la acción 9 ("tomorrow"). Al final de estas cinco acciones, tenemos una variable que puede ser "tomorrow" (mañana) o "tonight" (esta noche), dependiendo de si el segundo período de pronóstico es la noche que viene o la siguiente mañana. Si la tarea se ejecuta a primeras horas del día, el primer período de pronóstico será para ese día, y el segundo será para esa noche. Si se ejecuta al atardecer, el primer período de pronóstico será aquella noche, y el segundo a la mañana siguiente. %Nextforecast nos permite saber cuál de los dos tenemos cada vez. Acción 11: Esta es la acción Decir que en realidad nos muestra el pronóstico hablado. El texto es: Weather forecast for today is %Weather21. Weather forecast for %Nextforecast is %Weather31 (El pronóstico del tiempo para hoy es %Weather21. El pronóstico del tiempo para %Nextforecast es %Weather31). Esta acción Decir contiene tres variables. Dos son los pronósticos del tiempo que recibimos de la línea de XML, mientras que el último, %Nextforecast, cambia el texto para especificar correctamente cual es el periodo al que se refiere el segundo pronóstico. Como he dicho, sin embargo, usted puede fácilmente saltar las acciones de 6-10. Sólo se pierde la capacidad para especificar correctamente a qué se refiere el segundo pronóstico, lo cual no será importante para algunos - y probablemente no lo será si usted está usando esta información en un widget. Sin embargo, es un buen ejemplo, ya que utiliza los datos de la fuente XML original como una condición Si(If), y no sólo como una fuente de información. Usted también podría usar algo así en un contexto de tipo Valor-de-variable, que tiene un montón de usos en situaciones en las que la variable en cuestión no es sólo de día/noche. Por supuesto, en este ejemplo también se extrajo la información a usar, el propio pronóstico del tiempo. El método es básicamente el mismo, no importa lo que hagas, sólo tienes que saber dónde cortar un texto de origen para conseguir lo que quieres. Ejemplo 2: Obtención de noticias locales Este ejemplo se origina a partir de una solicitud de ayuda en nuestros foros, donde un miembro del foro quería crear una tarea que obtendría sus noticias locales y las leería. La receta es la misma que ya he mostrado, pero ya que esta es una tarea que tenía que crear desde cero, activé el software de captura de pantalla tanto en mi teléfono como en el PC para grabar lo que estaba haciendo mientras narraba al mismo tiempo. Debe ayudar a visualizar este artículo en su totalidad, así como mostrar un truco con el uso de una acción de Flash como una "herramienta de depuración" al crear este tipo de tareas. El vídeo está a continuación. http://www.youtube.com/watch?feature=player_embedded&v=0Gl3ANAk-Ls El sitio web utilizado como una fuente de este tiempo es éste . Echar un vistazo a la fuente reveló que el mejor separador para empezar es <h2>, que no precederá inmediatamente a los titulares buscados, pero tiene la ventaja de no ser poco utilizado en el texto. Tras la primera división obtenemos la variables %lbnews1, %lbnews2, %lbnews3 y así sucesivamente; %lbnews2 y siguientes contienen los titulares –y también algo de basura. Dividiendo % lbnews2 con el separador ">queda el título al principio de la variable %lbnews22, pero todavía lleva un poco de basura al final. Otra división sobre %lbnews22 usando el separador </a> nos deja con una variable %lbnews221 conteniendo sólo el titular buscado, que puede ser utilizado directamente en acciones dentro de la misma tarea, o transferidos a una variable global para utilizarlo en otros lugares. Dado que la división inicial creado varios hijos que compartan el mismo formato que %lbnews2, sólo con un artículo diferente, podemos copiar las acciones de división de %lbnews2 y %lbnews22%, y simplemente reemplazar las variables con %lbnews3 y %lbnews32, respectivamente. Tras eso tendremos %lbnews321, que contiene el segundo titular -y nada más. Copiar de nuevo y hacer lo mismo con el número 4 nos daría el titular Esta vez obtiene datos de Google Calendar aprovechando la capacidad de Google Calendar para acceder a la agenda con un enlace web. Siga las instrucciones que aparecen en el ejemplo 1 sobre cómo descargar e importar la tarea. en la sección de fecha y hora. que es un decir. http://www.xml Descarga:Lpnews.com. y así sucesivamente para todos los titulares que se deseen.com/watch?feature=player_embedded&v=b5aR9BozbQA Una vez importado. Al igual que con el ejemplo 1. Ejemplos: calendar/feeds/fulano%40gmail. vaya a la acción HTTP Get. Preparación Descargar la tarea de la parte inferior del artículo. En el campo Ruta. Siga las mismas instrucciones del ejemplo 1 para descargar e importar esto en Tasker. por ejemplo. necesita establecer MM/DD/AAAA.tercero en %lbnews421. Descarga:Lpnews. Se puede editar para cambiar el número de titulares si fuera necesario. o no funcionará. "fulano" si su correo electrónico de acceso para Google es fulano@gmail. Si lo lee como 07 de diciembre. Esto está establecido en la configuración del sistema del dispositivo. voy a explicar cómo funciona. a continuación. XXXX necesita ser reemplazado con su nombre de usuario de Google.tsk. Esta tarea sólo funciona con los formatos de fecha DD/MM/AAAA y MM/DD/AAAA. La versión básica que se necesita depende del formato de fecha que se tenga establecido. verá XXXX y YYYY como parte de la ruta: calendar/feeds/XXXX%40gmail.com/private-YYYY/full?singleevents=true&futureevents=true&orderby=s tarttime&sortorder=ascending&max-results=1 . DDMM y MMDD. pero en aras de la simplicidad no voy a entrar en eso. Tarea de descarga: Las descargas a continuación contienen la tarea final con 5 variables-titulares completos.com/private-YYYY/full?singleevents=true&futureevents=true&orderby=s tarttime&sortorder=ascending&max-results=1 Hay dos cosas que tiene que cambiar. Si usted lee 12/07/2012 como 12 de julio.zip Ejemplo 3: Locutor de eventos del calendario de Google Esta es otra tarea similar. Hay cuatro versiones disponibles: descargas directas XML y versión comprimida para cada una de las dos versiones de tareas básicas.com.xml. Cada titular estará en su propia variable puede ser utilizado en una acción Decir u otra. La acción final. tiene que modificarse para especificar un motor de voz diferente si el motor Amy UK Inglés Ivona que estoy usando para mi texto a voz no está instalado. te voy a dar una tarea que se puede descargar e importar y. en formato XML. hay maneras de automatizar esto más allá de copiar manualmente las acciones para cada hijo.tsk. Si su dirección de correo electrónico de Google no termina en @gmail. utilice DD/MM/AAAA. también hay que cambiar lo que sigue al %40 con lo que sea el dominio de su correo electrónico.youtube. abra la tarea.com/private-YYYY/full?singleevents=true&futureevents=true&orderby=s tarttime&sortorder=ascending&max-results=1 calendar/feeds/fulano%40googlemail. Se tiene que utilizar uno de los dos indicados. Como he dicho antes. Acción 5: Copia el valor de %Ceventdate2 en una nueva variable.):CalendarMMDD.):CalendarDDMM.zip Explicación Esta tarea se hizo a demanda para un propósito muy específico: Leer el próximo evento del calendario. Debe copiar esto en lugar de YYYY.com en la URL.):CalendarMMDD.tsk.tsk. con otra variable. con una dirección de correo electrónico randomkey@group. esa información queda a la derecha de la primera división. aunque se podría utilizar un método similar cambiando la URL de origen. Acción 3: Copia la variable en otra variable. Por tanto.xml. haga clic en el botón naranja XML que está junto al rótulo Dirección Privada. en %Ceventdate2. Acciones 1-2: Lee los datos en una variable. %Eventdate. Un ejemplo de una ruta acabada sería: calendar/feeds/fulano%40gmail.zip Descargar (MMDD. en el campo Ruta de Tasker. si es del mismo día. utilizando como separador startTime='.):CalendarDDMM. zip.xml. xml.YYYY necesita ser reemplazado con una clave de acceso privado para el calendario de Google. haga clic en la ficha Calendarios y elija el calendario que desea utilizar. Esta tarea ha sido probada para funcionar con el nuevo formato. Nota: Calendarios (de Google Calendar) creados recientemente utilizan un formato diferente.com/calendar/feeds/fulano%40gmail. . ya que va a ser su división en múltiples ocasiones. En la parte inferior de la pantalla de calendario. Esto significa que no voy a enumerar varios eventos.google. Para conseguir esta clave hay que empezar por ir a la página web de Google Calendar.1234567812345678/basic La clave de acceso es la parte que se destaca en negrita.google. Tarea de descarga Descargar (DDMM.tsk. como antes. esto se debe a que vamos a utilizar múltiples fragmentos de variables. Entre en la configuración. Seleccione un motor de voz que tenga instalado en su dispositivo.calendar. zip. Esto delimita la fecha y hora de inicio del evento.xml Descargar (DDMM.com/private1234567812345678/full?singleevents=true&futureevents=true&orderby=s tarttime&sortorder=ascending&maxresults=1 Guardar los cambios realizados en la acción HTTP Get y luego buscar la acción Decir del final. Lo hicimos antes también. Debe obtener un cuadro emergente con una dirección URL similar a la siguiente: https://www.xml Descargar (MMDD.tsk. que es la copia de los datos de la agenda de origen.com/private. y no quiero perder el contenido original. Acción 4: Hace una división de la variable %Ceventdate. Al igual que antes. xml. pero es necesario especificar tanto a la dirección de correo electrónico como la clave del botón XML mencionado anteriormente. Está en un formato específico. tenemos una variable %Samedayevent que es o "no" (si la condición Si(If) en el 9 no se cumplió) o "yes" (si es que se cumplió). La acción 10 hace Separar-variable sobre %Calendario con el separador <title type='text'> . Tenga en cuenta que. Esto es sólo para la limpieza de la basura en el texto final de %Calendar3. Esto es puramente para limpiar esa última variable de la acción 6. mes y año que se obtuvieron en las acciones 6-7 y reorganiza esa información para que coincida con el formato que tiene %DATE. Acción 7: Esto divide %Eventdate3. Esta variable es una configuración que usaremos más adelante para controlar si la acción Decir debe mencionar el siguiente evento. Acción 9: Sobrescribe el valor de la variable creada en la acción 8 en "yes" si la fecha coincide con %Eventdate31%Eventdate2-%Eventdate1. a pesar de que originalmente están en formatos diferentes! Después de la acción 9. esta tarea se creó originalmente para alguien que quería esta característica específica. %Eventdate contiene datos en el formato 2012-09-12T21:30:00. eliminando la basura. Previene que esta variable arrastre valores resultantes de ocasiones anteriores en que se haya ejecutado la tarea. que es el tercer hijo de la acción 6 (el que tenía el día del mes. y ahora volvemos a la variable %Calendar original. lo mismo que la configuración del sistema del dispositivo . Acción 11: De nuevo hacemos Separar-variable %Calendar3 con el separador </title>. Acción 10: Ya hemos terminado con las acciones que servían para comprobar si el evento es en el mismo día. y en otra variable pone el día del mes añadiendo un poco de texto basura al final. en caso de que la condición Si(If) en acción 9 no se cumpla. es un gran ejemplo de cómo se puede procesar un lío de datos para adaptarlos al mismo formato que utiliza Tasker. De esta manera. con la fecha del próximo evento. lo que significa que la división con un guión pone el año en su propia variable. Esto requiere un poco de explicación para dejar claro lo que se pretende. Acción 12: . estamos en condiciones de comparar la fecha actual (%DATE). No creo que hubiera importado si no la hubiéramos copiado desde el principio.Acción 6: Divide la recién creada copia de %Ceventdate2. Eso sólo significa que en lugar de utilizar el hijo %Calendar2. Sin embargo. usamos %Calendar3. Acción 8: Crea una variable %Samedayevent y establece su valor a "no.por lo tanto ¿por qué hay varias versiones de la tarea según el formato de fecha utilizado? %Eventdate31-%Eventdate2-%Eventdate1 contienen el día.000+02:00. pero siempre es una buena práctica hacerlo para estar seguro. %DATE es una variable insoportada de Tasker que contiene la fecha. más basura). que habíamos reservado desde el principio. está bien para aprovechar este tiempo porque siempre tendremos sólo una aparición de ese texto antes de la que queremos. utilizando la T como separador. Este es el texto que precede inmediatamente el título del evento. y aunque no es único (se usa una vez antes en el texto original). Hemos estado trabajando con otra variable para obtener la fecha del evento. Muchas personas preferirán que se muestre el evento siguiente." Esto es para asegurarse de que el valor predeterminado de esta variable es "no". como he dicho. sin importarles que sea de otro día. %Eventdate utilizando el separador – (guión). un procedimiento que hemos usado muchas veces a estas alturas. el mes en su propia variable. lo que puede ser "Yes" o "no" . El resultado es que tiene un mensaje para un día sin citas. como este ejemplo demuestra.Divide la variable %Ceventdate2 con el separador T . cosas que en realidad no se parecen naturales. Creo que podríamos haber utilizado %Eventdate32 directamente en lugar de empezar de nuevo desde este momento con %Ceventdate2. Acción 13: Un ejemplo real de Sección-de-variable aplicado a %Ceventdate22. y usar la depuración mediante una acción de Flash (ver ejemplo 2) son cosas esenciales para alcanzar el objetivo sin volverse loco en el proceso. La razón por la que copió %Ceventdate2 a una nueva variable en la acción 5 iba a ser capaz de hacerlo ahora. y por supuesto. y a veces se las confunde. y los minutos . al igual que ocurrió con el ejemplo 2 de este artículo. tener abierto el código del texto como referencia. . donde sólo nos interesan 5 caracteres. así que si tiene un perfil o una tarea que no es capaz de resolver. En conclusión Ser capaz de procesar datos variables en Tasker abre un montón de posibilidades. pero que merecen ser mencionados. debido al uso de diferentes mensajes para diferentes situaciones (evento / ningún caso). %Ceventdate2 es idéntica a la %Eventdate original. básicamente). y a veces eso es una molestia adicional que no vale la pena para algunas personas. y que no fueron incluidos en ninguna de las partes anteriores. Eso significa que obtenemos las horas. Sin esta característica. Todo esto es un poco redundante. Esta vez estamos después de la hora. para los otros días dice el mensaje dinámico con el título del evento y el momento. En la siguiente parte de la guía voy a cubrir algunos consejos y trucos en la utilización de Tasker. ya que podíamos haber puesto las acciones 8-9 aquí para que lo hicieran directamente. que ahora contiene datos en el formato 21:30:00. Esta es una buena aplicación de la acción Sección-devariable mencionada arriba. Acción 16: La acción final que culmina las 15 anteriores. pero de nuevo la culpa es de las prisas con que se hizo la tarea. dependiendo del valor de %Samedayevent. en otras palabras. el cual es bastante simple (acciones 10-12. A menudo los pequeños detalles son los que llevan tiempo. hágamelo saber y quizá podría convertirlo en ejemplo de otro artículo. habría sido un asunto de dividir el título del evento.el tiempo. pero también hay que trabajar mucho en el seguimiento de las variables cuando se está dividiendo a diestra y siniestra. por lo que estamos empezando de nuevo. Es difícil hacer un seguimiento de todas estas variables hijo. que se establece en las dos acciones anteriores. y no quiero cambiar la tarea en este ejemplo para mantenerla igual a la que se descargaba antes. por lo que su valor empieza con datos en el formato 2012-0912T21:30:00. los dos puntos. pero la tarea original fue hecha con un poco de prisa. no la fecha. pero todavía está ahí para lo que necesitemos. Por eso es mejor prevenir que curar.000+02:00. Acción 14-15: Estas dos acciones establecen la variable %nextEvent a cualquiera "Su primera cita es hoy %Calendar31 a las %Ceventdate22" o "No tiene citas programadas para hoy". y nos evita tener que volver a montar el tiempo como se hubiera tenido que hacer si antes hubiéramos dividido con los dos puntos. Simplemente nos Dice el valor de nextEvent%. No hemos utilizado la "familia" %Ceventdate aún. Hay que mantener la cabeza fría. Esta tarea es larga y complicada.000+02:00*basura*. Más adelante en la serie que voy a hacer otras partes dedicadas a ejemplos de todo tipo. semanas. o meses. A veces las cosas no son tan simples como parecen.php?p=8821039) han sido exhaustivas. horas.no podemos convertir una fecha a segundos. que me dice el tiempo que he dormido. por lo que 1000 segundos es (1000/60) minutos. y así sucesivamente.htcmania. Ejemplos de ello son la acción Insertar-encalendario. Las cuatro anteriores partes de esta guía (http://www. y otras veces las cosas son más sencillas de lo que parecen. y que no están descritas en otras partes de la guía. cosas que no son tan obvias. Tiempo en segundos Operar con el tiempo puede ser molesto. se pueden convertir fácilmente con la multiplicación o división. afortunadamente Tasker tiene un sistema que sí lo permite. días. Pero las fechas del calendario son otra cuestión porque -en principio. Esto. o entre dos momentos en el tiempo. tales como minutos. Eso crea un problema cuando hay acciones que requieren saber cuando ocurre algo en términos de tiempo desde o hasta ahora. Referenciar todos los tiempos en segundos permite aplicar las operaciones matemáticas normales como sumar y restar para calcular sin problemas los periodos de tiempo. pero si se me ocurren más puede haber una segunda serie de consejos y trucos en el futuro. Lección 5: Trucos y consejos.Tasker para principiantes. mediante el uso de su propia . que requiere que se ingrese la fecha y la hora en cuestión de minutos a partir de ahora. Hay 60 segundos en un minuto. porque las horas y los minutos no se llevan bien con las operaciones matemáticas. requiere que todos los tiempos se conviertan a segundos. por supuesto. La solución es usar la menor medida del tiempo que utilizamos normalmente: segundos. Las mediciones reales de tiempo. o mi perfil de modo “durmiendo”. Algunos “trucos” y maneras de hacer cosas en Tasker que pueden ser de mucha utilidad. He tratado de recopilar todos aquellos de los que me he acordado.com/showthread. Esta parte se dedica a varios consejos y trucos para utilizar Tasker. Pero. pero así es Tasker. aunque sea la fecha actual. Cuando se desactiva. Se puede convertir el contenido de una variable a otro formato. no 8 horas y 30 minutos. A este número se puede acceder de dos maneras. también Sección-de-variable y en algunos casos las matemáticas. A veces usted se encontrará con una fecha que está en otro formato incompatible con los requisitos de ConvertirVariable. horas. muestra una visión general de cual formato de fecha y hora es compatible con ConvertirVariable. %smduration contiene el tiempo total (en horas) que el perfil estuvo activo. Cuando se activa.MM. hace una simple operación(%TIMES-%smactivation)/3600.5 horas. La fecha puede estar sola. dividiendo por 60. Tienes cosas cotidianas como pies a metros. La variable incorporada %TIMES contiene la fecha/hora actual en segundos. semanas. El resultado estará en segundos. de la que hablaré enseguida. Para tomar un ejemplo concreto. pero lo entiendo bien así. por ejemplo. disponible a través del signo de interrogación que hay en la pantalla de configuración de Convertir-Variable. de forma similar a como %TIME y %DATE contienen la hora y fecha. ya se pueden aplicar las herramientas matemáticas a este sistema de tiempo. . luego dividiendo por 24. Tenga en cuenta que el resultado no convierte decimales en minutos. si usted obtiene de datos de un calendario en línea o similar. Aquí es donde entran en juego sus habilidades usando Separar-variable. Yo podría hacer que me diera horas y minutos. que se pueden convertir en minutos.cronología que se inició en enero de 1970. También se puede utilizar la acción Convertir-Variable. cosas más especializadas como hex a decimal. etc. he mencionado mi perfil de modo “durmiendo”. y la conversión de la que he hablado anteriormente: tiempo en segundos. Haber dividido por 3600 es lo mismo que dividir por 60 y luego de nuevo por 60. quizás el más sencillo sea AAAAMMDD HH. Este último es quizás el sistema más importante de conversión de los que hay disponibles en Convertir-Variable. siempre hay que especificar una fecha. otra vez por 60. dándome %smduration. por lo que me da 8. Fecha-Hora-a-Segundos es la función de conversión que se usa para convertir el tiempo a segundos. siempre que el contenido de la variable sea compatible con ese tipo de conversión particular. y tiene asociadas cuatro funciones de conversión diferentes. para convertir las horas y fechas a este formato. De este modo. convirtiendo los segundos en horas. y así sucesivamente para moverse a través de los formatos. La guía-delusuario-de-Tasker. en cuyo caso se supondrá que la hora es 00:00. Así cualquier instante o fecha puede expresarse como un (gran) número de segundos transcurridos desde aquel momento inicial. Convertir-Variable Convertir-Variable es una acción que siempre se debe tener en cuenta. Tras eso. copia el contenido de %TIMES a una variable de usuario %smactivation. en cambio no se puede convertir una hora sola. días. es también importante comprobar que el contenido de las variables de entrada es compatible con el tipo de conversión que se va a usar. Longitud 2 Almacenar Resultado en %dd 2. Es importante recordar que usted tiene las herramientas para hacer prácticamente cualquier cosa con el valor de una variable. Sección-de-variable Nombre: %fecha Desde 1. Usted podría. La imagen siguiente muestra las diferencias entre el formato breve y los formatos de presentación mediana y larga. Longitud 4 Almacenar el resultado en %aaaa 4. Tenga en cuenta que algunos de los formatos aceptados de Convertir-Variable dependen de la configuración del formato de fecha en la configuración del sistema. La única diferencia entre ellos es la cantidad de información que contiene la variable resultante. Sección-de-variable Nombre: %fecha Desde 3. Longitud 2 Almacenar el resultado en %mm 3. Un uso muy típico de esto sería devolver una fecha legible después de haber hecho algunos cálculos con el tiempo en segundos. Sección-de-variable Nombre: %fecha Desde 5. digamos que usted tiene una %fecha en el formato DDMMAAAA y necesita cambiarla al formato AAAAMMDD. Sin embargo. por ejemplo. hacer una tarea en la que se introduce un número de días a partir de . Establecer-variable %Nuevafecha a %aaaa%mm%dd Tras eso. Conversión del tiempo en segundos a fecha y hora Las otras tres funciones de hora/fecha se encargan de hacer la conversión a un formato legible por humanos. la variable %Nuevafecha puede ser utilizada en Convertir-Variable. por lo que no hay nada imposible. Una forma muy simple de hacerlo sería: 1.A modo de ejemplo. a continuación. los campos Min y Max también pueden ser sustituidos por variables. Variable-aleatoria En Tasker. lo que significa que usted puede controlar a distancia el rango del valor que será elegido al azar.pocketables. o una línea al azar en un archivo de texto? Bueno. da a la variable de Nombre un valor entre Min y Max. Pero todavía hay más. donde la tarea se ve así: 1.html). Un ejemplo práctico se puede encontrar en mi propuesta de cena aleatoria (http://www. la acción Variable-aleatoria es el alfa y omega para la fabricación de cualquier cosa al azar. por ejemplo en la selección de archivos diferentes si se ha puesto a esos archivos nombres con números.Separar-variable: Nombre: %dinnertext Separador: | 3. leer un archivo al azar. Por ejemplo.g-message. la clave es obtener un número al azar. podrás ver algunas opciones bastante simples para Nombre. utilizando la variable creada en el campo Línea.txt A la variable: %dinnertext 2. pero ¿cómo diablos se utiliza para. en lugar de un valor estático. por ejemplo.. Sería tan sencillo como sumar X * 24 * 60 * 60 (donde X es el número de días. y la clave es usar estas dos funciones juntas. En otras acciones de Tasker hay muchos ajustes que permiten utilizar variables para el ajuste. usted obtiene la lectura de una línea al azar! Esto se puede utilizar en muchos lugares. Establecer-variable: Nombre: %dinnerrandom A: %dinnertext(#) .hoy. Min y Max. En la acción Variable-aleatoria . pero no es la acción más intuitiva que hay. la acción Leer-línea permite leer una línea de un archivo de texto. y pasar la variable resultante por el proceso de Convertir-Variable. Obteniendo primero una variable aleatoria y. y luego usar ese número en otros lugares. Suena bastante simple. En cuanto a su configuración.com/2012/07/a. El número de la línea a leer se especifica en el ajuste Línea de esa acción. y luego devuelve la fecha que corresponda.. Leer-archivo: Archivo: dinner. En pocas palabras. y los cálculos de convertir eso en segundos) a la variable %TIMES. Al hacerlo de esta manera. etc. y transferir el resultado a una variable global. Este carácter | ha sido añadido intencionalmente al final de cada línea en el archivo de texto con el propósito específico de actuar como un divisor. Variable-aleatoria: Nombre: %dinnerno Min: 1 Max: %dinnerrandom 5. Esta es una manera rápida y tosca de contar el número de líneas que hay en el archivo. Mediante la adición de (#) al final de una variable de base (también conocida como matriz) con varios hijos (%dinnertext1. No es necesario actualizar la tarea por cada vez que se actualiza el archivo de texto. ya que el rango se determina leyendo primero el archivo de texto! La acción 5 utiliza este número generado de forma aleatoria para recoger la variable secundaria correspondiente. %dinnertext2. La acción 3 establece %dinnerrandom a %dinnertext(#). y dividiéndolo por el carácter |. en realidad obtenemos el número de variables hijo que hay para esa matriz. Establecer-variable: Nombre: %Dinnersuggestion A: %dinnertext(%dinnerno) La tarea comienza por la lectura del contenido de un archivo de texto. se obtienen variables %dinnertext1-5. Si el archivo de texto contiene 5 líneas. Esta variable puede ser utilizada en una acción Decir.Notificación. Esto nos genera un número al azar con garantías de que estará dentro del rango adecuado para el archivo de texto.4. Dividiendo así. En otras palabras. nos da una variable para cada línea que hay en el archivo de texto. un rango igual al número de líneas en el archivo de texto original. Esto le ahorra tener que cambiar el campo Max en Variable-aleatoria cada vez que cambia el número de líneas en el archivo de texto. Haciendo Matemáticas . incluso si el archivo de texto se ha modificado externamente. La acción 4 crea una variable aleatoria con rango desde 1 hasta %dinnerrandom. y %dinnertext(#) será 5. contando cuántas variables se crean al dividir. y escogerá un número al azar de ese rango. ya que la tarea contará el número de entradas en sí. la tarea es completamente independiente de los cambios en el archivo de texto. etc). Tanto las condiciones Si(If) como la manipulación de variables permiten aplicar las matemáticas a cualquier situación. Tasker no va a entender lo que está tratando de hacer. o para controlar contextos disparadores. mediante la adición de 1 a una variable cada vez que recibo un SMS. Convertir-Variable no va a entender lo que significa 9. por ejemplo. crear un perfil que ponga a cero la variable contador . Si usted tiene un tiempo en el formato HHMM. podría. Por ejemplo. Por ejemplo. Se añade un valor numérico a una variable especificada cada vez que se ejecuta la acción. Para poner a cero el contador de Tasker. ya que no tiene que ser lo mismo.3. Puedes tratar de resolver el problema a utilizando condicionesSi(If) que chequan la longitud de la variable y añaden ceros. pero hay que tener cuidado al hacerlo. Entonces. pero fácilmente tendrás que añadir decenas de acciones para cubrir todas las posibilidades. dará lugar a 9. y en muchos casos esto puede ser un desafío más grande que cualquier otra cosa en Tasker. en acciones Decir. en widgets. puedo añadir un perfil que cuenta cuántos SMS he recibido. como Texto-recibido. esencialmente haciendo que la variable se convierta en un contador. La acción Sumar-a-variable es una herramienta muy útil en estos casos. la aplicación de SMS reiniciará a cero el contador de mensajes pendientes de leer. como 1435.35. y luego utilice las reglas normales matemáticas. usted tiene un sistema que incrementará la variable cada vez que algo sucede. La buena noticia es que el enfoque es bastante simple: utilizar variables de Tasker con valores numéricos en lugar de los números reales (como se utilizan las incógnitas en matemáticas). como 0930. Esto le da 14. el número de horas que ha estado trabajando. ya que no almacena los ceros innecesarios tras hacer matemáticas.3 en términos de tiempo. que es un número decimal desde una perspectiva matemática. en realidad se puede hacer esto compatible con Convertir-Variable dividiendo por 100. He mencionado algunos usos anteriormente. La mala noticia es que usted todavía necesita saber matemáticas para ser capaz de hacer esto. Al hacer esto. Si usted no sabe cuándo poner algo entre paréntesis en matemáticas. La razón por la que hay que tener cuidado es que hacer lo mismo con un cero al principio o al final. pero el contador Tasker seguirá con el mismo valor que tenía. Si esto se vincula a un contexto de eventos. puede contar los SMS entrantes. si yo entro en la aplicación de SMS y leo todos los SMS. mensajes de correo electrónico. y así es compatible con Convertir-Variable. Nunca confunda un contador de Tasker con un contador interno de aplicación. durmiendo. es importante recordar cuándo y cómo reinicializar la variable. con la conversión de las diferentes medidas de tiempo. o conducido en su coche. Puede utilizar esta información en Notificaciones. En algunos casos las matemáticas también se puede utilizar como un sustituto para reemplazar acciones Separarvariable / Sección-de-variable. Contando las cosas Algo tan simple como contar tiene muchos usos en Tasker. pero también puede ser interpretado como horas y minutos con un punto separador. que van desde la longitud de una variable a la fecha de modificación de un archivo. Esta acción de Prueba es una de esas acciones que usted debe conocer y estar familiarizado con lo que puede buscar allí si alguna vez necesitas una de sus herramientas. Esto cuenta el número de caracteres en una variable. lo correcto sería decir que el tipo es Variable Length. El 98% de las veces es activado por la conexión del cargador. que Tasker puede leer mediante un contexto de estado de energía. datos estáticos. Está vinculado a un contexto de variable. (*) Nota del traductor: En realidad.cada vez que abro la aplicación de SMS. o un archivo. Yo no tengo mucho trato con esta acción. %Sleepmode. del mismo modo que con la acción Convertir-Variable. los tipos de prueba están en inglés. SMS y correos electrónicos en un único contador de eventos nuevos. Prueba La acción de Prueba está semi-escondida en la categoría Misc. un contador de este tipo no es tan preciso como el contador interno de una aplicación. asumiendo que abro la aplicación para leer los mensajes. No tenga miedo de usar múltiples tareas y perfiles para lograr algo Una cosa que me ha sorprendido observando las solicitudes de ayuda para Tasker es como muchas personas sienten la necesidad de meter la máxima funcionalidad en el menor número posible de tareas y perfiles. pero a menudo esto perjudica la funcionalidad real. Parece un deseo de mantener Tasker organizado y funcionando sin problemas. Por tanto. Con Tasker. lo que utilizo normalmente es el tipo de Prueba de Longitud-de-variable (*). Se puede elegir entre una larga lista de tipos de prueba. que puede tener usos enSección-de-variable. Usaré mi perfil de modo “durmiendo” como ejemplo una vez más. La palabra Prueba se refiere aquí a probar el valor de algo. Pero en realidad el perfil no está directamente vinculado a ese contexto. al menos no si se mantiene al día con la lectura de todos los mensajes. pero por otro lado. como una variable. el contador de Tasker estará otra vez descuadrado. puede contar con casi todo lo que sucede en su teléfono. También se pueden combinar diferentes contadores. y cuando lo hago. que a su vez se . Normalmente esto no es un gran problema. incluso en el Tasker en español. Pero si salgo de la aplicación sin haber leído todos los mensajes pendientes. como la combinación de las llamadas perdidas. puede haber un único contexto de conexión WiFi que reaccione a varias redes diferentes mediante el uso de una barra en los campos de configuración. pero también se podría considerar la posibilidad de poner esa acción en su propia tarea separada. Todos los contextos se han de cumplir. como el SSID. ya que francamente no hay razón para hacerlo. Un evento de calendario que dura hasta las 10. ¿por qué utilizar el doble de perfiles de los que son necesarios aparentemente? La respuesta es simple: Para que el perfil principal sea controlable con diferentes métodos. Pero no hay que confundir la falta de una relación O entre los diferentes contextos con las distintas posibilidades de configuración dentro del mismo contexto. yo no habría sido capaz controlarlo también utilizando Nelly. Hablando de acciones de edición.establece por un perfil independiente que sí está vinculado al contexto del estado de alimentación. incluso cuando el dispositivo se inicia. por medio de una entrada de voz que contenga "buenas noches" o "buenos días. Por ejemplo.00 y otro de 10.00. hacer los cambios se vuelve tedioso. Por complicado. Eventos sucesivos de calendario que se superponen en Tasker Existe la capacidad de tener perfiles activos mientras duran los eventos del de calendario. tengo en mi Tasker varias acciones individuales bastante complicadas. que a su vez activa otro perfil. vinculados a la misma tarea. puedes poner en el campo SSID Casa/Trabajo. Las tareas también se puede dividir en partes. Nelly. Si usted tiene dos eventos del calendario sucesivos. La actualización del widget es algo que tengo que hacer en situaciones distintas. ni siquiera tiene que ser una acción complicada: si es algo que se utiliza en bastantes lugares. Ya he mencionado antes las ventajas de convertir variables en contextos. Diablos. puede tener dos perfiles distintos. y también cuando cambia alguno de los valores utilizados en el widget. Si quieres un perfil que esté activo cuando está conectado a una red WiFi llamada Casa y también cuando está conectado a una red WiFi llamada Trabajo. usted sólo tiene que editar las acciones complicadas en un solo lugar y los cambios se aplican a todos las tareas que correspondan. por lo siguiente. y aún así sólo tiene que editar una tarea. y luego usar Realizar-tarea para referirse a ella. Contiene acciones que en conjunto obtienen la información necesaria y la utilizan para actualizar mi widget Make Your Clock Widget. En la práctica eso no ocurre así.00 a 10. Esto significa que enchufar la carga hace que se active un perfil que establece una variable. no basta con que se cumpla uno u otro. quiero decir que su configuración implica rellenar muchos campos. Este cambio no sólo ayuda a mantener las cosas organizadas sino que permite compartir grupos de acciones entre las tareas. y tal vez incluso una condición Si(If) que añade aún más información. En lugar de insertar el mismo conjunto de acciones en las diferentes tareas independientes. cada uno con diferentes contextos. Un ejemplo es mi tarea de actualización de widget. digamos uno de 9.00 a 11. a menudo con una gran cantidad de información. Si usted necesita la misma acción en varios lugares por supuesto puede copiar y pegar. en Tasker se mantiene hasta que el tiempo . También debo recordar a todos que la adición de múltiples contextos a un perfil hace que la relación entre ellos sea Y. Los perfiles están vinculados a contextos y a tareas. se podría suponer que el primero se desactiva al mismo tiempo que se activa el segundo." Si el perfil principal hubiera sido directamente vinculado a la carga eléctrica. pero hay un peligro con este sistema. salvo que se pueda editar en un solo lugar. No hay manera de hacer esta relación O. utilizando la acción de Realizar-tarea para ejecutar otras tareas como partes de una tarea. Esto ahorra tiempo tanto en la configuración inicial como cuando se necesitan modificar las acciones. Mi asistente de voz basado en Tasker. Así que. Puede parecer que esto pone un poco de desorden en su Tasker. pero en la práctica no hay diferencia. De esta manera. Por lo tanto. solo inserto una acción que sirve para llamar a otra tarea que contiene el grupo de acciones comunes. también tiene la posibilidad de configurar %Sleepmode. no O.00. y esto es un claro ejemplo de ello. pero la misma tarea puede ser utilizada en varios perfiles. Tasker sólo es capaz de ver la notificación cuando aparece. El contexto de evento Notificación a menudo puede ayudar en este tipo de situaciones. los acontecimientos contiguos tienen que ser configurados de forma que el primer evento termine un minuto antes de que el otro comience. El título notificación también se almacenarán en la variable incorporada %NTITLE. Contextos de notificación Hay un puñado de aplicaciones que se integran con Tasker.00. la utilidad del título de la notificación depende de la aplicación y la versión del sistema operativo. el primer evento dejará de ser activo en 9. Además. No hay contexto de estado para las notificaciones que permanecen activas. pero olvídese de filtrar por detalles como el asunto (Sin embargo. lo que permite utilizarlo en Tasker. y se puede imaginar usos similares con otras aplicaciones. y el segundo evento se activará a las 10. La utilidad del campo de título depende de la aplicación. Tampoco hay evento ni forma de detectar que una notificación desaparece. Retrasar la activación/desactivación del perfil .00.59. La app de Gmail para Gingerbread crea un título de notificación diferente que la app de Gmail para ICS. e incluso la versión del SO. Para evitar esto.00. que se almacena en la descripción de notificación). en este caso 9.01. fuertes vibraciones en la calle). no por la descripción. Así. desde las 10. A pesar de estas restricciones. porque permite a Tasker reaccionar a las notificaciones creadas por otras aplicaciones. y no contiene realmente la información que uno probablemente necesita (como el asunto del mensaje. Es culpa de Android. suponiendo que Tasker tenga accesibilidad (un ajuste en la configuración principal del sistema). Esto significa que usted puede crear perfiles que actúan sobre las notificaciones de Gmail. las sincronizaciones y otros procesos que muestran notificaciones mientras están activos. la carga de archivos. Puede filtrar por qué aplicación envió la notificación y el título de la notificación.00. pero por desgracia. y eso ocurre a las 10. Yo personalmente lo uso para personalizar las notificaciones de Gmail de correo electrónico dependiendo de la localización (visuales en casa. Por lo tanto. pero todavía queda una gran cantidad de aplicaciones y servicios a los que Tasker no tiene acceso directo.supera las 10.59. lo cual sería útil para detectar la instalación de aplicaciones.59 ambos eventos estarán activos y eso puede provocar colisiones. Como he dicho. el evento Notificación es genial.00. K-9 Mail es una aplicación de correo electrónico alternativa que tiene la necesaria integración con Tasker).00.00 a las 10.59. Autoremote. Si el dispositivo se vuelve a conectar durante esos 5 minutos. Lección 6. (1) Hemos comprobado que en Tasker versión 4+ no se puede usar la acción Detener-tarea de la forma indicada: desde la tarea de entrada no se puede detener la tarea de salida (o viceversa).A veces uno puede no querer que su perfil se active o desactive en el mismo momento en que el contexto es detectado. . Autoremote. pero quiere hacerlo de modo que el perfil no se desactiva hasta que el dispositivo se ha desconectado durante 5 minutos sin haber vuelto a conectar en ese tiempo. Un ejemplo típico sería si usted tiene un perfil de conexión Wi-Fi que no desea desactivar si se queda fuera de cobertura durante unos segundos. El retraso de una tarea es simple con la acción Esperar. La tarea de salida primero usa la acción Esperar 5 minutos. Para ello. y a continuación Establecer-variable %Wifiactive a 0. Más información sobre ello en http://www.htcmania. dándole margen para salir antes de los sonidos empiecen a molestar. y luego añade una acción Detener-tarea con el nombre de la tarea de salida (1). Así resulta que su perfil original está comandado por una variable del otro perfil. De esa manera usted puede utilizar la acción Esperarpara retrasar realmente la desactivación del perfil principal en 5 minutos. el verdadero desencadenante para el perfil debe ser otro perfil propio. Esta parte de la guía está dedicada plenamente dedicada al plug-in de Tasker. o quizás usted quiere que su perfil de reunión se desactive unos minutos después de que termine el plazo indicado en el evento del calendario. Tras eso ya puede crear su perfil original utilizanado el contexto de estado Valor-de-variable con la variable %Wifiactive igual a 1. y estos son sólo los que vinieron a la mente. la tarea de entrada contiene una acción acción Detener-tarea que aborta la tarea de salida para evitar que se desactive el otro perfil.php?p=12354445 . Ese otro perfil contiene el contexto original pero sus tareas controlan al primer perfil. Supongamos que desea crear un perfil que se activa cuando se conecta a una red WiFi. ambos con sus respectivas tareas de entrada y salida.com/showthread. La tarea de entrada utiliza una acción Establecer-variable %Wifiactive a 1. En conclusión Probablemente hay cientos de consejos y trucos que ayudan con el uso de Tasker. Tasker para principiantes. aunque en relación con los perfiles de este tipo es un poco más difícil -pero no mucho. T: existe una versión gratuita). pero en formas que están diseñadas con el usuario en mente. un plug-in de Tasker y más. La era en la que el teléfono no sabía lo que estaba haciendo su tableta termina aquí. La amplia selección de terceros y/o plug-ins para Tasker extiende su funcionalidad en todo tipo de formas.Solución de error en el que todos los botones de una acción tenían la misma etiqueta.google. ¿Qué es AutoRemote? Los dispositivos móviles pueden comunicarse entre sí.. Una vez instalado y . Los últimas 5 partes (http://www. no lo hace enteramente por su cuenta. no el back-end.. sigue siendo en gran medida un Tasker plug-in. chat de vídeo." Sobre todo tener en cuenta que ahora Autoremote también integra el plugin Autonotification. . . son todos servicios diseñados para que los maneje el usuario. .Otras correcciones de errores..toremote&hl=en ). usted tiene lo que necesita para crear configuraciones que hacen que los dispositivos IOS parecezcan que son de principios del siglo pasado. Después de todo..Aquí os dejamos la parte de la guía que se refiere a Autoremote. se permite que los dispositivos Android puedan comunicarse unos con otros.. y con los ordenadores. hasta la activación de etiquetas NFC para el control de los sistemas de automatización del hogar. (N. pero eso es sólo la mitad de la historia.. mensajería instantánea. Tasker ya tiene la capacidad de recoger prácticamente cualquier dato. sin que el usuario tenga que ser parte de ella. Inconsistencias menores en las capturas de pantalla serán debido a esto. Una de las últimas incorporaciones entre los Tasker plug-in del mercado es también uno de los más poderosos. Permite el envío de mensajes entre los dispositivos que se han registrado como grupo.ZmljYXRpb24iXQ.. En pocas palabras.. así que con AutoRemote instalado para que pueda comunicar esos datos a otros dispositivos. correo electrónico. AutoRemote por otro lado es un sistema de comunicación diseñado para los dispositivos de comunicación.pocketables.Solución de error en los mensajes de notificaciones si se tenía establecida una contraseña. .de manera instantánea y sin molestar al usuario.Enviar mensajes y notificaciones a usted mismo sin utilizar internet.google.com/store/apps/d. y enviarlos. SMS. con el que puedes tener notificaciones interactivas con Tasker y Jelly Beam: https://play.Posibilidad de cambiar puerto de Linux.Hay que decir que este plugin desde la publicación de esta guía ha tenido una actualización bastante importante: "Novedades de esta versión: . ¿Alguna vez su teléfono puede avisarle de la batería de la tableta de agotarse después de días de inactividad? AutoRemote da a los dos. Mientras AutoRemote ha crecido más allá de su dependencia original de Tasker en algunas cosas.uide-to-tasker ) han demostrado lo mucho que hay que saber sobre Tasker en sí mismo.pocketables. Autoremote.com/store/apps/d.com/tag/autoremote ). Primeros pasos con AutoRemote AutoRemote se puede tener de Google Play por 1´99 Euros (https://play. el canal necesario para comunicar este tipo de información. algo tiene que gestionar los mensajes.. Nota: Esta guía está escrita basada en la versión beta del software que se publicó justo antes de esta guía (intencionalmente). etc. actuar sobre ellos. y se llama AutoRemote (http://www. Sin embargo. y hay que asegurarse de que se tiene la versión más reciente de todo el software para ver el mismo conjunto de características que las que se muestran aquí.com/tag/begin. se puede acceder al menú para entrar en la lista de dispositivos registrados. pero como se puede imaginar. Una vez hecho esto. . en la sección de Plugins. mientras que el valor predeterminado es un sistema de coincidencia parcial como se ha mencionado anteriormente. Especificación de un destino en el contexto y el mensaje le permite controlar qué mensajes desencadenan el contexto sin que tenga que coincidir con el mensaje en sí. Esto abrirá la misma página en el otro dispositivo.como el brillo de la pantalla .abierto. Marcando esta casilla hace eso. sólo uno que se enciende y apaga rápidamente. Opciones de plug-in: Comportamiento de evento (Event Behaviour): El contexto de AutoRemote es un contexto de estado por defecto. Hay pocos ajustes disponibles en la pantalla de configuración. Trate de ir a Google Play. así que vamos a ir a través de todos ellos. contextos y acciones para Tasker. a continuación. así que vamos a empezar con el contexto. las características de Autoremote que son independientes de Tasker estarán listas. Es un sistema de coincidencia parcial. así como instrucciones para acceder al segundo código personal de AutoRemote. y para acceder a AutoRemote de acceso web.gl/RandomCharacters. Mayúsculas y minúsculas (Case insensitive): Si está marcada. Limpiar filtro de mensajes (Message Filter Clear): Borra el filtro de mensajes. ya que en realidad crea un filtro de mensajes en blanco que hará reaccionar a todos los mensajes. Vas a tener que hacer esto en ambos dispositivos para que los dos se puedan enviar mensajes entre si. y así conectar dispositivos entre sí. Objetivo (target): Uno de los métodos para el filtrado de mensajes. entrar en una página de aplicaciones. que no es lo mismo que simplemente hacer el blanco del filtrado de mensajes. Abrir la URL en un navegador le presentará una página donde usted puede enviar mensajes a su dispositivo. abrir URL remota. seleccione Compartir y. mostrando que está configurado correctamente. Tenga en cuenta que Tasker sigue pensando que el contexto es un estado. que estará en los formatos http://goo. Opciones de concordancia Filtro de mensajes (Filter Message): El método principal para el filtrado de mensajes. el filtro de mensajes diferencia mayúsculas y minúsculas Mensaje Exacto (Exact Mensaje): Hace que el filtro de mensajes requiere una coincidencia exacta. la clave que se utiliza para algunas partes del sistema eco AutoRemote. Aquí se puede registrar un nuevo dispositivo utilizando la dirección URL personal de ese dispositivo. usted querrá que se comporte como un evento en muchas situaciones. Está disponible en la categoría Tasker Estado contexto. Éste le permite especificar el texto que debe ser parte del mensaje para que pueda desencadenar el contexto. Esta URL se utiliza tanto para el registro de su dispositivo con otros dispositivos. Contexto de Tasker AutoRemote agrega ambos. De vuelta en la aplicación. por lo que "mensaje" coincidirá con "este es un mensaje". vaya a buscar a su URL personal. así que si usa esta opción para cambiar la configuraciónes de Tasker que normalmente revierten automáticamente .es necesario desactivar "restaurar la configuración" en las opciones de perfil . Los dispositivos registrados en esta lista estarán disponibles como una opción cuando se va a enviar un mensaje. No hay que confundir esto con la opción Canal en Dispositivo .éste le permite enviar un mensaje a un dispositivo específico y al mismo tiempo permitir un canal. y el valor predeterminado es arpar. imagina los canales como salas de chat. Tipo de dispositivo ( Device Type): Seleccionado automáticamente en función de la configuración anterior Mensaje ( Message): El mensaje que desea enviar Canal (Channel): Los canales son grupos de conexión que varios dispositivos pueden unirse para formar parte de la misma red. usted comenzará a recibir todos los mensajes en esa sala de chat. Tasker acción 1: Mensaje AutoRemote El contexto AutoRemote le ayuda a disparar perfiles de activación basada en mensajes entrantes. tales como la fecha y las condiciones del tiempo.Usar Regex: Permite usar este sistema de coincidencia en el filtro de mensajes Variables de Tasker (Tasker Vars): Mensaje ( Message): El nombre de la variable que va a contener el mensaje que enviamos. La sintaxis básica para esto esparametros =:= comando.” . un canal (ver más abajo) o el mandar el mensaje a el último remitente. Esta configuración controla el nombre de la variable de parámetro (s). a las 17:00 el teléfono podría decir la lista en voz alta: "¡Tienes que ir de compras! Usted necesita comprar zanahorias y helado " También puede haber múltiples parámetros en un único mensaje. Al entrar en una sala de chat. comparta su URL AutoRemote personal con su esposa y que ella envíe cosas que necesita usted para comprar como "tienda =:= zanahorias y helado". Este sistema será más fácil de entender con los ejemplos de más abajo. y la acción del mensaje le permite enviar mensajes. Además. esto se puede utilizar de esta manera: ”Puede utilizar AutoRemote con condiciones Tasker. Crear una "tienda =:=" comando y combinarlo con una condición 17:00. una conexión de canal se realizará con el dispositivo receptor. mientras que el envío de un mensaje a un canal envía un mensaje a ese canal. al salir de una sala de chat. Lo mismo sucede con los canales. Comando (Command): Controla el nombre de la variable de comando creado al usar el sistema =:=. Esto permite al dispositivo simplemente responder a un canal en lugar de tener que especificar un dispositivo. La siguiente descripción de los desarrolladores AutoRemote podría ayudar a comprender mejor los canales: ”Para entender mejor lo que es un canal. Luego. usted dejar de recibir mensajes de la misma. Al igual que el contexto. Dispositivo ( Device): Seleccione el dispositivo para enviar el mensaje o alternativamente. Luego. Si se utiliza esta opción. tiene algunas opciones también. Ajustes principales (Main settings): Para acceder a la configuración general del AutoRemote. Por defecto es % armessage Parámetros y comandos (Comm Params Prefix): Parte de un sistema que le permite enviar comandos más avanzados utilizando AutoRemote. Para usar un ejemplo que viene en la descripción de Autoremote en el Google Play. separadas por un espacio antes del separador de comandos =:=. básicamente. Un ejemplo sería si su tablet le permite a su teléfono sabe lo que está haciendo. Objetivo (Target): Corresponde a la opción Destino ( Target) en el contexto Contraseña (Password): Si AutoRemote se ha protegido con contraseña en la aplicación principal. mediante la categorización del mensaje. pero el teléfono ha estado apagado. en el dispositivo de recepción. Enviar mensaje (Send Message): le permite enviar el mensaje de prueba Tasker acción 2: Canales AutoRemote Las segundas opciones son para la gestión de canales. AutoRemote para Windows . y sólo quieres el último. Dispositivo elegido Borrar ( Clean cosen device): Borra la configuración anterior Incluir-Quitar (Entero or exit): Hace que el dispositivo especificado entre o salga del canal especificado Salga de todos (Exit all): Hace que el dispositivo especificado se excluya de todos los canales Aplicar ahora ( Apply now): Vamos a aplicar la configuración de inmediato en lugar de tener que esperar a que se ejecute la acción. Puedes especificar cómo manejar múltiples mensajes de un mismo grupo. los cambios se aplican sólo a un dispositivo específico.Configuración avanzada Tiempo de vida (Time To Live): La cantidad de tiempo que el sistema intentará entregar el mensaje antes de abandonar Grupo de Mensajes (Message group): Permite realizar la parte del mensaje de un grupo de mensajes. por lo que hay varios tipo de mensajes en cola. es preciso especificar la contraseña aquí para ver el mensaje. Las opciones disponibles son las siguientes: Nombre (Name): Nombre del canal para gestionar Dispositivo ( Device): Por defecto estarán todos los dispositivos de forma predeterminada. Si se especifica. Las opciones disponibles son idénticas a los otros lugares en que usted puede enviar mensajes AutoRemote. y luego envielo. lo que le permitira arrastrarlo en una macro. hará EventGhost un dispositivo disponible en su dispositivo Android. EventGhost se puede describir mejor como Tasker para Windows.org/ ) . pero todavía es lo suficientemente diferente para que básicamente tengas que aprender toda una nueva aplicación como Tasker para poder usarlo correctamente. pero no puedo empezar a explicar EventGhost en detalle aquí .eventghost. por ejemplo mediante la vinculación a programas como nircmd.especialmente ya que no he utilizado el programa mucho yo mismo. Esto hará que el evento aparezca en el registro de EventGhost.net/utils/nircmd. La forma más sencilla de conseguir esto es crear el mensaje que desea enviar desde su dispositivo.Hay programas disponibles para equipos con Windows que amplían la red AutoRemote en los mismos. el programa es muy similar a AutoRemote en Android.com/u/9787157/auto.. El modo de funcionamiento es similar. Esto le permite ejecutar comandos al recibir ciertos mensajes. Hay un ejemplo más abajo que muestra una configuración muy básica con EventGhost. Como he dicho. La otra acción es para enviar un mensaje. EventGhost es bastante diferente de Tasker como parecer un marciano a los nuevos usuarios. Tenga en cuenta que EventGhost tiene que estar registrado en el dispositivo al que desea enviar los mensajes. un programa que automatiza el ordenador casi de la misma manera que lo hace Tasker su dispositivo Android. y no voy a convertir esto en una guía EventGhost.dropbox. usted puede crear reglas para los mensajes entrantes. Uno es para el registro de EventGhost. lo que básicamente significa que la acción le permite a su red AutoRemote saber que está ahí. y encima de eso. enviar mensajes y recibir mensajes.html Por otro lado.nirsoft. Las URLs se pueden abrir en un navegador cuando se reciben.lkthrough. .. Puede agregar dispositivos. de forma similar a los perfiles de Tasker.html ) usarlo para apagar el PC por la noche (que es lo que hago). habrá un par de nuevas acciones disponibles en EventGhost.exe (http://www. Debe ejecutarse en el arranque EventGhost. configúrelo para enviar a EventGhost. Con el plugin instalado EventGhost. AutoRemote EventGhost plug-in El programa Windows también tiene una ficha que le permite instalar y gestionar un plugin EventGhost (http://www. a continuación. es necesario el evento que cree un mensaje. http://dl. así que no voy a entrar en detalles. Para disparar en realidad una macro EventGhost (similar al perfil de Tasker). Mediante el uso de los mensajes en el formato "tabletstatus activa( o inactiva) =:=. agregue una acción AutoRemote/mensaje. A continuación. que utiliza Tasker y AutoRemote. basada en el estado de la tableta. lo que le daría un mensaje de voz para cuando el tablet está en uso. que pone los parámetros antes de la =:= y después los comandos. por ejemplo. agregue una acción de establecer variable: %Tabletstatus a %arpar2. pero necesitamos dos parámetros. Ejemplo 1: Un dispositivo dejando que otro sepa lo que está haciendo Cuando hablé de cómo Android ha arruinado iOS para mí. Como contexto. Seleccione AutoRemote. agregue una tarea salida. Esto hace que el perfil se active cuando la pantalla de la tableta está encendida. Era una referencia a una posibilidad muy real en Android. y a su vez dejar que el ipad me notifique los mensajes de correo electrónico en lugar de hacerlo mi teléfono.youtube. No necesitamos comandos aquí. Ahora puede hacer lo que quiera con eso.AutoRemote Chrome extensión AutoRemote también tiene una extensión de Google Chrome disponible. También puedes añadir una acción de Decir al perfil AutoRemote activado.. Como tarea de entrada. Ahora tendrá una variable global que podrá estar "activo" o "inactivo". Así es como que iba a funcionar.. pero de la beta se hizo un cameo en el vídeo con el ejemplo 2 en la parte 4 de este manual. ¿qué está pasando con todos los =:= % arpar2 y todo eso? Bueno. puede agregar una variable % Tabletstatus que si coincide con inactivo haga que no se active si está usando la tableta. y queremos que contenga información sobre el estado de la tableta. pero lo es). Si tiene un perfil de notificación por correo electrónico. y configurar un mensaje similar a "tabletstatus inactivo =:=. al escenario de pantalla de activación / desactivación. Configúrelo para enviar el mensaje "tabletstatus activo =:=" al teléfono.com/watch?feature. he mencionado que estoy esperando que mi teléfono sepa que estoy en mi iPad. La extensión añade una opción para enviar mensajes de texto a uno de sus dispositivos al hacer clic derecho en Chrome. Configúrelo para cuando la pantalla esté encendida." En el otro dispositivo. que se puede utilizar para enviar URLs o partes enteras de una página web. El primero . Es relativamente nuevo.&v=v8YkWrUVm88 Entonces." En la tarea. VIDEO YOUTUBE: http://www." estamos activando el sistema de comandos de AutoRemote. use la opción: Estado/ Pantalla/ Estado de la Pantalla. habilita el comportamiento de eventos y filtro de mensajes se ajusta a "tabletstatus. Opción 1: Cuando la tableta se encuentra en uso en absoluto Crear un nuevo perfil de Tasker en la tableta. queremos enviar un mensaje de la tableta que es único. en el que abro un URL en el teléfono haciendo clic derecho en mi navegador PC. u hacer que éste diga por ejemplo "La Tablet esta ahora arpar2". Este último ejemplo se muestra en el siguiente vídeo (puede que no sea obvio que es el teléfono el que habla. cree un nuevo perfil. Normalmente es bastante sencillo. usted puede configurarlo para enviar el mensaje sólo si coincide %WIN con Netflix. un sistema que probablemente debería ser implementado en una configuración como esta. Ejemplo 2: notificación de Gmail que se abre Gmail en el PC . pero en la práctica.(tabletstatus) es estático. lo único que necesita hacer es cambiar el contexto estado/pantalla de la tableta por cualquier contexto que funcione. como el nombre de la ventana es el nombre Netflix o la ventana de Gmail es Gmail.pero no mucho. Es una buena idea filtrar esto de alguna manera antes de enviar el mensaje. o simplemente podemos usar la variable local %arpar2 en el mismo perfil (que es el caso con el ejemplo Decir). Mediante el uso del contexto de evento/establecer variable.t: el clima) en su tablet. basada en el estado de la tableta. Opción 2: Cuando una aplicación o función específica está siendo utilizado Hacer que el teléfono esté al tanto de cuando la tableta está en uso es grande. Tenga en cuenta que este perfil puede convertirse en una molestia si se va constantemente cuando te encuentres. es un perfil muy simple. que está aquí "activo / inactivo". es un poco más complicado . el contexto de pantalla encendida se activa. Un ejemplo sería establecer el teléfono en silencio si usted está utilizando una aplicación de libro electrónico sobre la tableta. La parte 5 de esta guía cubre cómo configurar y tratar los retrasos en un perfil correctamente. Esta variable es WIN%. en lugar de filtrarla en el teléfono cuando ya haya llegado. AutoRemote divide el mensaje en (esto por defecto): %arpar y las variables %arcomm. y esta variable se puede utilizar como un disparador para varias cosas. usted puede hacer que el tablet envie el nombre de la ventana activa al teléfono. Cuando la tableta se enciende. y entonces envía un mensaje al teléfono de que la tableta está activa. Si usted hace un perfil con el contextol de evento/establecer Variable. aplicación) que se está visualizando. %arpar2 es el segundo parámetro. que es el nombre de la ventana (es decir. La variable %arpar2 . Si usted quiere que sea consciente de cuándo una aplicación específica se utiliza. el perfil se desactiva. Cuando la pantalla se apaga. Si usted necesita el teléfono para saber cuando la tableta está usando Netflix. En realidad. puedes mover por tu dispositivo y ver el nombre de la ventana que se muestra como un mensaje flash mientras se mueve entre aplicaciones. Si usted quiere que su teléfono sepa cuando la tableta está conectada a una red Wi-Fi específica. ejecuta las tareas de entrar. se da a un dispositivo la capacidad de actuar sobre el estado de la otra. para evitar que el sistema se llene de correo basura. puede transferir este "ajuste" a una variable global en el teléfono y utilizarlo en otras partes de Tasker. sin embargo. o cosas como esas. A continuación. tratando de saber el tiempo (n. El segundo parámetro es "activo / inactivo". Al habilitar el sistema de comandos con =:=. en lugar del contexto en el estado de visualización de la configuración anterior. por ejemplo. Tenga en cuenta que este método particular enviará todos y cada uno de los cambios de pantalla al teléfono. y las tareas de salida envían un mensaje diciendo que está inactivo. siendo la variable a monitorear %WIN y lo vinculan a una tarea que tenga como acción Flash : %WIN. y simplemente nos permite filtrar este mensaje en particular para su uso en el contexto en el teléfono. y se actualiza tan pronto como la ventana cambia de nombre. Tasker ha construido en un variable para la etiqueta de ventana que esta siendo utilizada. en función de qué es exactamente lo que usted quisiera que se tenga en cuenta. dando una idea de cómo funciona esto y qué nombres se utilizan para aplicaciones. será entonces la ventana activa en ese momento. Lo esencial es que hay una variable que básicamente te dice lo que se muestra en la pantalla. y cambiando el "activa" por %WIN "en la tarea de introducir y eliminando tarea de salida del perfil (ya que se convierte en un perfil de eventos). pero…¿Y si sólo queremos que sea consciente de cuándo las aplicaciones específicas o características están en uso? El concepto es prácticamente el mismo que el anterior. o cúando los auriculares están enchufados. . A continuación. Escriba "Mensaje del teléfono: {} eg. reinicie EventGhost. haga clic derecho en él de nuevo.arcomm" en el "texto para mostrar" caja. En primer lugar tienes que ir a EventGhost. Haga clic en Aceptar y asegúrese de que está anidada en Autostart. pero que yo uso mucho. cuando aparezca.T:¿?) para abrir la aplicación de Gmail del teléfono (véase el ejemplo original para eso). Ejemplo 3: Reenviar notificaciones a un PC cuando está encendido. a continuación. Seleccione Configuración. Ahora haga clic derecho en el árbol Autostart en la lista y seleccione Agregar acción. . Guarde la configuración EventGhost. Encuentre la acción EventGhost Registro bajo AutoRemote. Configurelo con un nombre y añada un dispositivo a la lista de dispositivos.. y escriba "notificación".com/2012/09/b. un mensaje de AutoRemote a mi PC para gmail. esto sólo envía un mensaje de AutoRemote en su lugar. e ingrese "AutoRemote. Este es un sistema muy simple. Mostrar OSD bajo EventGhost.Ejemplo 4 en la parte 3 de esta guía (http://www. Haga clic derecho en la macro.html ) muestra cómo funciona mi sistema de notificación de Gmail. Seleccione el dispositivo que ha añadido.event. y encontraras AutoRemote en Otros.payload. Utiliza AutoRemote y EventGhost para crear un sistema en el que las notificaciones se envían al ordenador cuando está encendido. seleccione Añadir acción y. a continuación.-3-scenes. Si se cumplen ciertos contextos (como estar en casa). seleccione Agregar evento.T: ¿?) La tarea es casi idéntica a la tarea “tap” ( N. Desde que publiqué esa parte aunque he añadido una característica toque largo al logotipo. lo que significa que simplemente manteniendo pulsado el logotipo de Gmail.osd" en el campo. agregue una macro.Message.com. muestra un logo de Gmail en la pantalla cuando un correo electrónico entra en juego Esto puede clikarse para abrir la aplicación Gmail en el teléfono. todo a fondo y desde la propia notificación. como el canal. Agregar Plugin.(N. Por último. Cuando vienen mensajes de correo electrónico mientras estoy en casa. puede verlos en mi teléfono o mi PC. abre Gmail en el PC. Déle un nombre. Ese mensaje se abre automáticamente en el navegador en el PC.pocketables. Este ejemplo se basa en una configuración que el propio desarrollador de AutoRemote utiliza. con variables en un formato completamente diferente.Activated. y al ejecutarlo en el arranque. Para mi ejemplo de Skype. Esto significa que cuando un mensaje que comienza con "OSD" se recibe. probablemente debería leer un tutorial EventGhost . simplemente hago que el mensaje sea "skypeon". Las macros son como los perfiles de EventGhost y los eventos y acciones que caen en las macros se vinculan juntos como los contextos y tareas en Tasker. porque no sólo estamos utilizando Tasker. a continuación. que se produce cuando el equipo se enciende (suponiendo EventGhost se establece en el inicio automático).Activated. a continuación. Cuando el equipo está encendido. Un uso posible para esto puede ser. haría a AutoRemote establecer una variable basada en un mensaje de EventGhost.Ahora ve a Tasker en su dispositivo. ¿qué está pasando aquí? La acción EventGhost Registrarse en EventGhost permite que el dispositivo sepa que está activo. y compruebe que está puesto para caer PCs a los que no se puede llegar a partir de canales de forma automática (que debe ser de todos modos el ajuste que este predeterminado) . arrastre y suelte el evento que usted desee desde el registro hasta la macro. Entonces. usted conoce la instrucción por ahora. ahora es muy sencillo de utilizar estos eventos. En este caso. Para obtener el máximo partido de lo que estos dos podrían hacer trabajando juntos. A continuación. cree su perfil. entre en AutoRemote. No agregue ningún filtro a la configuración.Deactivated. Esta es una gran característica. Utilice AutoRemote como contexto y filtre el mensaje la instrucción que hizo.Skype". por ejemplo. porque es una lista de eventos que usted puede arrastrar y soltar! Si. Es fácil confundirse aquí. Seleccione canal como dispositivo para enviar el mensaje.que no voy a escribir. el registro en el lado debe mostrar lo que sucede en el equipo desde el punto de vista de EventGhost.cambia a Skype. no lo que usted hace con él en Tasker. crear uno nuevo. Añadir una nueva macro. A continuación. porque no sé muy bien EventGhost yo mismo. desencadenar un perfil silencioso . Como la tarea conectado. introduzca "notificación" en el campo canal de más abajo. En el campo Mensaje.Skype" y "eventos" Task. haga clic en la macro y seleccione añadir una acción. Crear un nuevo perfil y seleccione el contexto de evento/Notificación/UI. pero con un ordenador como el dispositivo al que se está monitorizando. como un ejemplo. EventGhost utiliza métodos diferentes para eventos y acciones. este en silencio o establecer más fuertes las notificaciones cuando haces eso. el mensaje "skypeon" en mi caso. Ejemplo 4: PC permitiendo un dispositivo Android sabe lo que está haciendo Este ejemplo es similar al ejemplo 1. Suponiendo que no se ha perdido demasiado con la configuración por defecto de EventGhost. Si usted desea enviar a su dispositivo un mensaje cuando usted está utilizando Skype. por ejemplo. el registro mostrará el evento "Task. entonces encuentre Enviar mensaje bajo AutoRemote. Ahora. se muestra la variable de comando (el título de notificación en este caso) en la pantalla. en Tasker. tenemos un evento para un mensaje entrante que contiene "OSD" y una acción para mostrar un menú OSD (On Screen Display) que contiene la versión EventGhost de la variable %arcomm de Tasker. Guardar y salir de Tasker. darle un nombre y.Skype son los que usted desea. Suponiendo que hiciste los pasos en el ejemplo 3 para activar el plugin y registrar EventGhost en el arranque. Eso es todo. escriba "osd =:=%NTITLE". Envié el mensaje que desea enviar. el "Task. Haga que la tarea realicelo que quiera hacer – lo importante de este ejemplo es la relación EventGhost / AUtoRemote. el título de notificaciones en el teléfono aparecerá como un mensaje en el PC. y añada Mensaje AutoRemote como acción. por ejemplo si usted juega a juegos en línea y desea que el teléfono. que había instalado desde hace un tiempo. El mensaje ahora debe sonar en ese momento. Cuando tenga la extensión Chrome instalado. Haga un nuevo perfil en Tasker. pegar. y todas lo demás herramientas que necesita como botones en la escena. y establecer el filtro de mensajes de "comprar". establezca el nombre del comando a "Copiar" y el comando a "copiar". Ejemplo 5: Copiar texto al portapapeles de Chrome de un dispositivo He mencionado anteriormente la extensión de Chrome. Mediante el uso de escenas. Agregar una tarea con una acción Decir con "Hay que ir de compras! Necesitas comprar %arcomm "como el texto. a continuación. en el que sólo el último mensaje será leído. que es mucho más fácil que usar un software especial.html ) le permiten enviar pulsaciones de teclas para el sistema. Al vincular esto a un sistema en el que el Pc avisa al dispositivo cuando está en funcionamiento Photoshop.basado en esa variable. lo he configurado para que pueda copiar texto de Chrome en mi computadora directamente en el portapapeles en mi teléfono. Añadir el contexto AutoRemote.net/utils/nircmd. con el fin de evitar que una ventana de conmutación rápida desencadene cambios de perfil. Este escenario es realmente muy fácil de configurar. pero es importante no olvidar lo esencial de AutoRemote: acceso Web. y el conjunto "copy =:=" como el filtro de mensajes. agregue el contexto AutoRemote. añadir un segundo contexto para la hora que la persona deja el trabajo (la hora a la que desea que el mensaje suene) en el mismo perfil. Vincule el contexto a una nueva tarea. registre el dispositivo. Tenga en cuenta que este es un "mudo" versión de este sistema.nirsoft. usted debe tener una nueva opción para AutoRemote donde se puede copiar la selección o URLs abiertos en los dispositivos registrados. niveles. y seleccione del conjunto de acciónes: Miscelaneo/Copiar al portapapeles. De acuerdo con la sugerencia del desarrollador de AutoRemote. y restablecer la variable mediante un mensaje para cuando el programa informático se cierra. puede crear un escenario en el que la puesta en marcha de Photoshop en el ordenador muestra automáticamente un panel de control para que aparezca en el teléfono. y ambos pueden ser utilizados a través de AutoRemote (NirCmd directamente desde el programa AutoRemote Windows). y el mensaje (lista de la compra) se puede agregar a través de la interfaz web para enviar "comprar =:= artículos de las compras aquí" para el dispositivo. Ejemplo 4. que luego se dirá en voz alta cuando sale del trabajo. haga una nueva regla. seleccionar. Esta URL personal que te dan se puede introducir en un buscador para que le dé una página que le permite enviar mensajes al dispositivo desde cualquier navegador web. Tanto EventGhost y NirCmd (http://www. que a su vez provocan la entrada de teclado allí. Imagine tener una escena de Photoshop que tiene botones para copiar. Uno de los ejemplos en la página de Google Play para AutoRemote es un escenario en el que una mujer envía una lista de las compras a su marido. Seleccione Comportamiento de evento. a continuación. Con todo esto configurado. entrar en Tasker. Una vez más usted puede ser que consiga un uso para el sistema de retardo de la guía anterior. A continuación. Ejemplo 6: Acceso remoto ToDo List EventGhost y las extensiones de Chrome son buenos. es el . pero que decidí incluir. puede crear interfaces personalizadas con botones que envían mensajes AutoRemote a su equipo.1: Convertir el teléfono en un mando de control automático de programas informáticos específicos Esto es más un consejo que un ejemplo. y crear un nuevo perfil. Ponga %arcomm en el campo de texto para esta acción. hay que abandonar el concepto de variables como entidades únicas. Dedicada a las matrices. por ejemplo. Lección 7. separados por .momento en base. Cuando se hace referencia a una matriz. y cada elemento es una variable en sí misma. quizás con la excepción de la terminología. En la lección 5 de esta guía (http://www. pero ahora es el momento de explorar a fondo estas variables de Tasker. En Tasker.htcmania. %Hola3. pero casi. se suman a la lista con mensajes nuevos. ahora tenemos un nuevo conjunto de herramientas que podemos utilizar para manipular las variables a nivel de matriz.php?p=8821039) mencioné brevemente las matrices. desde las matemáticas a la programación. una matriz puede ser descrita como una variable de base que tiene varias variables hijas. %Hola()incluye los contenidos de cada variable de la matriz. etc. Pero lo que hace especial a las matrices son algunas cosas que se pueden hacer únicamente con ellas. Cada elemento de una matriz es una variable.com/showthread. que es la forma en que hemos estado utilizando matrices anteriormente. En ese momento no era oportuno entrar en muchos detalles. y que el inicio del sonido del mensaje se dispare. es común referirse a ella de dos formas: por su variable de base (como %Hola) o en el formato %Hola(). dejando una red Wi-Fi en vez de un tiempo específico. ¿Qué es una matriz? Las matrices son comunes en muchas áreas. por lo que puede ser utilizado como una variable independiente. que no son verdaderas matrices. Tasker para principiantes. %Hola es entonces una matriz con varios elementos. Por otro lado. Mediante el uso de métodos de los artículos anteriores se puede almacenar cualquier nuevo artículo en su lista en la lista actual. obtienes un montón de variables hijo %Hola1. %Hola2. Cuando se utiliza Separarvariable sobre la variable %Hola. Hasta aquí nada nuevo. además de todo lo que se puede hacer con cualquier variable. algunas de las cuales veremos más adelante. El primer método es usado para configurar acciones específicas en Tasker. y así sucesivamente. porque ya hemos estado utilizando variables hijo a lo largo de la guía. Las matrices de variables. Dado que las variables de una matriz están dispuestas en una forma que pueden ser fácilmente referenciadas. en lugar de tratarlas como simples variables individuales. Para utilizar matrices. harina en la segunda. si se borran las variables de la matriz %ingredientes.3 en el ejemplo).dinglisch.net/userguide_summary.una coma. %matriz(#>) El índice del primer elemento de una matriz definida. Esto se debe a que la matriz se mantiene a pesar de que se borre la variable que se usó para crear la matriz.leche. %matriz(#?b/c) Una lista separada por comas de los índices de matriz (de menor a mayor) con valores coincidentes con los indicados. esto permite nuevas maneras para referirse a ellas. o 0 si la matriz no está definida (1 en este caso). b. en la sección Variable Arrays (http://tasker. pero también es posible acceder a ellas de manera especial. %matriz(>) El contenido del primer elemento de la matriz (a). Cuando manejamos matrices. %matriz() o también %matriz(:) .html). la primera acción Flash no se vería afectada.harina y le aplicamos la acción Separar-variable usando el punto como separador. mientras que la segunda solo mostraría variables vacías. Estas variables se pueden utilizar como cualquier otra. se obtendría un %ingredientes vacío en la primera. d. obtenedremos una variable matriz %ingredientesque contiene %ingredientes1 = azucar %ingredientes2 = leche %ingredientes3 = harina En este momento. con puntos intermedios como al principio.harina. %matriz2. %matriz3 y %matriz4 contienen respectivamente a. por lo que verás azúcar. porque %ingredientes puede hacer referencia a la variable individual %ingredientes o a los elementos de la matriz %ingredientes. Por el contrario. c. o 0 si no coincide ninguno (2. y el mismo resultado azúcar. Si tenemos la variable %ingredientes = azucar. Pero una acción Flash sobre %ingredientes()mostrará el valor de cada variable hija.leche. Esto resulta confuso. o 0 si la matriz no está definida (4). separándolas con una coma. y voy a citarlas aquí: Si las cuatro variables %matriz1. éste es el error más común: hacer referencia a uno cuando te quieres referir a lo otro. Si se borra la variable %ingredientes y luego se repiten ambas acciones Flash.leche. La lista de estas opciones está disponible en la versión inglesa de la Guía de Usuario. Veamos algunos ejemplos: %matriz(#) El número de elementos de una matriz (4 en este caso).leche. usar una acción Flash para ver %ingredientes nos mostrará azucar. Haciendo referencia a las matrices Dado que las matrices numeran listas de variables.entonces tenemos una matriz con 4 elementos.harina. %matriz(<) El contenido del último elemento de la matriz (d). %matriz(#<) El índice del último elemento de una matriz definida. recordando utilizar ese mismo carácter en la acción Separar-variable. Algunas otras acciones también crean matrices en sus resultados. puede hacer referencia al elemento de matriz en ese punto de la matriz mediante el uso de este formato. ya he citado la acción Separar-variable.Todos los elementos de la matriz separados por comas (a. Lo que realmente se hizo fue que se copió el contenido de un archivo de texto a una matriz. se podría usar otro separador menos frecuente como por ejemplo la arroba @. Bucles For . para contar el número de líneas en un archivo de texto. referirnos al último elemento de una matriz sin saber qué número es.b. 2. Cómo se crean las matrices En cuanto a la forma de generar las matrices. como ListarArchivos recién mencionada. El uso de (#)detrás de la variable de base hace que Tasker cuente el número de elementos en la matriz. que en aquel caso conicidía con el número de líneas del texto. Uno de los métodos que falta aquí (porque no es exclusivo de las matrices) es el formato %matriz(%variable). lo que nos permite. Con Array-push para agregar un elemento inicial.b. Usando Separar-variable: Establecer-variable %matriz a. aunque algunas otras acciones. Mediante la asignación de elementos individuales con Establecer-variable: Establecer-variable. también permite crearlas. Usted también reconoce aquí %matriz(). ya que lo tiene casi clavado: 1. Listar-archivos. Por supuesto.b. %matriz(#). por ejemplo. %matriz3 c 3. 4. por ejemplo. Estos métodos antes mencionados nos muestran diferentes formas de referirse a las matrices.c.c) %matriz(3:) Todos los elementos con índices a partir de 3 (c.c. Esto se debe a que la usamos en un ejemplo en la parte 5 de la guía . Aparte de eso.d) %matriz(:3) Todos los elementos con índices de hasta 3 (a. también puede crearlas manualmente con Establecer-variable o con Array-push. Separar-variable es quizás la forma más común de generar matrices. Voy a citar una vez más la guía de usuario oficial sobre esto. haciendo que cada línea fuese un nuevo elemento de la matriz. Asumiendo que tiene una %variable con un valor numérico. Si alguno de sus datos incluye una coma.d) Un buen observador puede haber reconocido la primera de ellas.d Separar-variable%matriz .d) %matriz(2) o simplemente %matriz2 El contenido de elemento con el índice 2 (b) %matriz(2:4) El contenido de los elementos con índices 2 a 4 (b.c. que es lo mismo de que lo que acabamos de hablar anteriormente. por ejemplo. comenzando con un "hola". Else y End-If. cada uno con uno de los elementos de la lista. mundo. La ventaja de este sistema es que se puede especificar un conjunto de acciones y luego ejecutar un montón de valores a través de ellas sin necesidad de duplicar las acciones. esta acción For puede parecer confusa pero pronto te das cuenta de su potencia. en este caso 4 veces. Items: hola. . si el grupo incluye alguna acción que grabe un archivo conviene asegurarse de que el nombre del archivo sea único para cada ítem. que viene a significar por-hacer. Se aplica sobre una variable. con una lista de elementos o ítems separados por comas. pendiente o simplemente lista-de-tareas. estás? Flash: %itemaflash End-For En este caso el grupo solo tiene una acción Flash que se ejecutaría una vez por cada elemento de la lista. la variable %itemaflash se actualizará con el siguiente elemento de la lista. Todo el conjunto de acciones del grupo se ejecutará una vez para cada elemento de la lista. Se necesita algún tiempo para acostumbrarse con los detalles e implicaciones. las acciones For y End-For se encuentran juntas con Si(If). O sea que aparecen 4 mensajes flash. y en cada ejecución la variable tendrá el valor de ese ítem concreto.En Tasker. Por ejemplo: For Variable: %itemaflash. cómo. Ejemplo: lista TODO V2 Nota del traductor: la expresión TODO se refiere a To-Do. terminando con "estás?". For/End-For crean un grupo de acciones fácilmente distinguible dentro de la tarea. Cada vez. Inicialmente. Al igual que Si(If)/EndIf . y usando una matriz como fuente. lo que hace imposible algunas cosas como seleccionar separadamente alguno de los elementos o líneas. y leerlo de nuevo en un variable que luego se divide por la coma (recuperando de nuevo la forma de matriz). De esta forma. la matriz puede ser utilizada como la fuente para un elemento de menú de escena. Voy a mostrar la lista genérica aquí ya que las tres listas concretas añaden un poco de complejidad adicional. La ventaja de esto era que la lista se formateaba para su lectura en el archivo de texto directamente. La nueva lista se basa en matrices. lo que significa que ahora tenemos las herramientas necesarias para hacer que esta lista TODO se parezca un poco más a una aplicación bien afinada. que es directamente compatible con el archivo escribiendo %Array() al archivo de texto (escribir el valor de cada elemento de la matriz. También he añadido una nueva lista genérica TODO que no activa ninguna alarma. Decidí utilizar matrices en su núcleo. se puede utilizar un elemento por sí solo. y es bastante más eficaz que el sistema anterior. se pueden añadir elementos fácilmente mediante la acción Menú. además de rehacer mis tres listas para situaciones específicas. un archivo que se leía en una sola variable y se mostraba en un campo de texto. y así no era necesario utilizar un divisor más específico. La función de agregar a la lista fue hecha guardando un archivo de texto. Los elementos se almacenan en una matriz global. La lista aún se guarda en un archivo de texto. . El primer sistema de lista TODO que había creado utilizaba métodos que no eran ideales. De esta forma. que rellena automáticamente una escena con ese elemento. cada línea está separada por un cambio de línea. se crea una lista en la que cada elemento de la matriz se convierte en un elemento de la lista. Los elementos de la lista pueden ser seleccionados y/o utilizados individualmente. Además. pero el archivo de texto es más una función de copia de seguridad y ya no es el almacenamiento principal de los elementos.Recientemente decidí rehacer mi sistema lista de tareas TODO (que se describe en la parte tercera de esta guía ) para darle un mejor rendimiento y más características. El único inconveniente era que la lista entera se convirtió en una sola entidad. separados por una coma). pero estoy seguro de que tenía un razón para ello cuando lo hice)  Mostrar Escena Generic Todo La escena: el elemento de menú El elemento de menú es el corazón de la escena. Se parece a esto:  Leer-archivo. el campo de la variable hace referencia a la variable de base de la matriz con el fin de conocer también todos los detalles de la matriz. para que se puedan seleccionar varios elementos. Tenga en cuenta que los elementos del menú de escena tienen escenas internas. El modo de selección se establece a múltiple.txt a Variable:%Gentodo (lee el archivo de texto de mi lista GENérica TODO en una variable)  Separar-variable %Gentodo. y la variable es %Gentodo. Francamente no recuerdo la circunstancia en la que se necesitaba. la opción de formato de ítem tiene una escena sobre la que se puede hacer clic y editar.Tarea de activación La tarea de disparo es bastante sencilla. Por ejemplo. Posición 1. Tenga en cuenta que. Esto establece cómo se ve cada ítem. si %Gentodo no coincide con ++ (se elimina la primera entrada en la lista si está en blanco. ocupando la mayor parte de ella. Archivo:gentodo. Aquí es donde se establece la fuente como variable-matriz. La doble D final no es un error tipográfico)  Array Pop %Gentodo. .  Establecer-variable %Gtselectedd a 0 (restablece una variable utilizada más tarde. Separador:. dado que la fuente es una matriz. Por lo tanto. usted tiene una matriz con los números de los artículos.4. Mi lista genérica TODO tiene una imagen estática de una chincheta ante el campo de texto. 3. Esto se rellenará con los datos de la fuente del elemento de menú. %Gtselectedd contiene el número de artículos seleccionados. así como una variable con el número de elementos seleccionados. 5 en la lista. Nota del traductor: La advertencia previa también ha quedado desfasada a partir de Tasker 1.  Establecer-variable %Gtselectedd a %Gtselected(#) %Select_indices es una variable generada automáticamente (una de cuatro.y es pre-rellenada con un campo de texto dinámico y un campo de icono dinámico. %Gtselected(#) cuenta el número de elementos de la matriz %Gtselected. En resumen. Por ese motivo. La escena: el botón de eliminar . pues se escribieron antes de que Tasker corrigiese este problema. Por ahora. Advertencia: Actualmente hay un error por el cual %select_indices no se actualiza al des-seleccionar el último elemento. No hay forma directa de resolver este problema. Esto nos lleva a la función de eliminación. si seleccionamos los ítems 1. que también corrigió ese problema (1). pero todavía se puede utilizar esta opción para elegir el aspecto que tendrá. La pulsación del ítem activa una tarea que contiene lo siguiente:  Establecer-variable %Gtselected a %select_indices  Separar-variable %Gtselected.3. a partir de 0. cuando has seleccionado algo en el elemento de menú escena.2. Así que. las otras tres son %select_labels. Se muestran en color atenuado para resaltar que están obsoletas. %tap_label y %tap_index) que Tasker establece cuando interactuamos con el elemento de menú de escena. que luego se ponen en %Gtselectedd. Aparte de tener una serie de elementos predeterminados.3. la frase siguiente y otras posteriores están caducadas. y termina pareciéndose a una viñeta cuando el elemento de menú está totalmente relleno.2: ya no comienza por 0 sino por 1. Contiene una lista separada por comas con los números de los elementos seleccionados. Nota del traductor: El artículo original añade al final (1) una actualización en la que se explica que el inicio de este índice está cambiado a partir de Tasker 1. esta escena interna es la misma que las escenas a las que estamos acostumbrados.2. %select_indices contendrá 0. Separador:. hay que actualizar toda la escena para anular correctamente el último elemento. el botón (X) de eliminar tiene dos funciones: cancela la escena. Variable: %Gentodo. nombre: %gendelete. y elimina elementos. Título: Eliminar elementos %Gtselectedd.En mi escena. ítems:%Gtselected(  Sumar-a-variable. En la pestaña de la pulsación larga. Nombre: %gendelete. las acciones son las siguientes:  Si %Gtselectedd> 0  Menú. Valor: %shuffle. La primera función es realizada por una pulsación breve mediante la acción Destruir-escena. si %shuffle no coincide con *shuffle*  Array Pop. y se hace manteniendo una pulsación larga sobre el botón. valor: 1  Restar-de-variable. ítem 1: Sí (Establecer-variable Gtcd a 1). ítem 2: No (*nada*)  Si %Gtcd coincide con 1  For Variable:%gendelete. Eliminar elementos es más complicado. Posición: %gendelete . mientras que los elementos de matriz empiezan en 1. creando un sencillo cuadro de diálogo de confirmación. y así sucesivamente.txt. Además de eso. Para cada elemento de la matriz%Gtselected. Al hacer clic en Sí se establece una variable que es condición para la siguiente acción Si(If) del grupo. que se utiliza en las siguientes cuatro acciones. nombre: %shuffle. el campo de ítems requiere una lista separada por comas. En cuanto a las cuatro acciones anidadas. por lo que la escribimos con el formato %Gtselected(). Esta variable también se restablece al final de la tarea. traemos ese número hasta el nivel de la matriz. Se ejecutan de forma secuencial las cuatro acciones anidadas y eso se hace para cada elemento de la matriz %Gtselected. y no necesariamente una matriz. pero es demasiado tonto para dejar así. En la configuración de la acción For . Este problema se solucionará pronto de acuerdo con el desarrollador Tasker: Se corregirá para que sea el mismo que los índices obviamente. Mediante la adición de 1 a %gendelete. Así. porque en la tarea de borrado todo está anidado en un bucle For %Gtselectedd (que se repone cada vez). Te habrás dado cuenta de que hay una acción que reajusta %Gtselectedd. el valor de dicho elemento se copiará en %gendelete. valor: 1  End-For  Escribir-archivo. así ya no volveremos a tener una situación en la que accidentalmente se borren elementos que hubieran sido seleccionados en el pasado. Ahora mismo. se hace muy fácil quitar cosas de la matriz. Cuando los dos coinciden. Texto: %Gentodo()  End If  End If  Establecer-variable: %Gtcd a 0  Limpiar-variable: %shuffle  Establecer-variable: %Gtselectedd a 0 Como se puede ver. se desactiva eficazmente la tarea asociada a la pulsación larga. poniendo su valor en%gendelete. en este caso con Sí y No. Los otros elementos superiores de la matriz son movidos hacia abajo de modo que si se elimina el . Esto quiere decir que los últimos valores de la matriz %Gtselectedpersisten. la primera simplemente resuelve un despiste cerebral del desarrollador. Basta con utilizar Array-pop con %gendelete como posición para que Tasker saque de la matriz el elemento que ocupa esa posición. de manera que elemento de menú 1 es el mismo como elemento de la matriz 1. Archivo: gentodo. A continuación tenemos nuestro bucle For. usando la tercera acción del bucle For. El primer Si(If) se asegura de que hay elementos seleccionados antes de intentar ejecutar acciones para eliminarlos. que a su vez contiene el número del elemento de menú seleccionado. si no hay nada seleccionado. Esta acción Menú genera un cuadro emergente con una pregunta y respuestas de tipo estándar. por lo que siempre es 0 a menos que haga clic en Sí para confirmar la eliminación. los elementos de menú comienzan en 0. Esto va a causar problemas en las escenas de algunas personas. el valor de elemento de matriz 1 es el mismo que el elemento de menú 0. La acción Menú que está como la primera acción en el grupo For no debe confundirse con el elemento de menú de escena que he mencionado muchas veces. y luego continúa con el siguiente elemento. Sumar-a-variable. hay un puñado de cosas anidadas aquí. pero no hay acción que limpie la variable %Gtselected. combinada con la cuarta. y luego se divide en una matriz. En este punto terminamos los grupos de acciones y continuamos con tres acciones que se ejecutan siempre. Parecería que no es necesario limpiar %shuffle ya que es una variable local. no importa cuál seleccione primero). En el grupo de acciones. una vez que se han añadido 1 para compensar la diferencia en la posición inicial. y %Gtselectedd. que quedan preparadas para la próxima vez. La escena: el indicador de ítems seleccionados Hay un campo de texto en la parte inferior de la escena que muestra "%Gtselectedd ítems seleccionados". Sin embargo.elemento tercero de una matriz que tenía cinco elementos. corrige un problema inherente a este sistema. %shuffle. Cuando se finaliza el bucle For. separando por la coma. Al escribir %Gentodo() al archivo. el número cuatro se convierte en el número tres. en efecto. pero si se mantiene la escena y hay que borrar algo en varios lotes. se escribe una lista de elementos separados por comas. lo que nos deja con 9 elementos. aquí se sobreescribe el archivo completo. entonces el número del elemento quinto tendrá que ser ajustado hacia abajo 4 veces para mantener la coincidencia. añadí 1 a %shuffle al final de cada bucle. que era el número 6 cuando se seleccionaron los elementos. La escena: botón nuevo ítem . A diferencia de la primera versión de la lista de tareas.5 (siempre en orden. La segunda acción en el bucle For. porque tenemos toda la información en la matriz y el archivo está des-actualizado. te has saltado una acción! Sí. Para solucionar este problema. debido a que todos los elementos de la matriz son empujados hacia abajo cuando eliminamos un elemento. %shuffle representa el número de veces que la lista se ha encogido. pero sólo si %shuffle tiene realmente un valor (la condición Si(If) se encarga de verificarlo). donde el anterior número 5 es ahora el número 4. y seleccionamos los números 3 y 5. Es tan simple como eso. La próxima vez que se abra la escena. La primera vez que el bucle se ejecuta. Esencialmente se trata de limpiar las variables%Gtcd. A continuación. los números no coinciden después de la eliminación! Digamos que tenemos 10 elementos en la lista/matriz. aunque sólo sea para dar garantías. %Select_indices entonces mostrará 3. el bucle For comienza borrando el elemento 3 de la matriz. Espera. Si el bucle For continuara normalmente. leemos de nuevo el archivo a una variable. es el momento para escribir los cambios en el archivo. %shuffle seguiría contando con el último valor y por eso conviene borrarla. borraría el número 5. Si borramos 5 elementos. la acción segundaRestar-de-variable resta este número del número del elemento que va a eliminar. los números de elementos de matriz coinciden con los números de elementos de menú. 4. Este sistema tuvo que ser cambiado cuando reconstruí el sistema TODO. y luego actuar basado en eso. "Todo tag=:=nombre del elemento". si usted tiene una matriz de 10 elementos y agrega un nuevo elemento. sólo ligeramente diferente para acomodar tres listas en la misma escena.txt. una coma que hubiera dentro de alguno de los elementos recibirá el mismo tratamiento que una coma que separa los elementos de matriz original. se escribe la matriz en el fichero. El formato para la adición es el mismo. y relanzada) cada uno de los elementos separados por una coma se convertirá en un elemento independiente. pero creo que compensa por la ventaja de poder añadir varios elementos de una sola vez. Las tres listas tienen diferentes alertas. Texto:%Gentodo()  End If Esta tarea es simple. chequea si realmente se introdujo algo en la variable. pero cuando la lista se actualiza (escena destruida. La escena: el botón actualizar Alertas Lo que he mostrado hasta ahora es mi nueva lista TODO genérica. El inconveniente es que no se pueden utilizar las comas dentro de un elemento de texto. Integración con AutoRemote En todas estas listas de tareas ahora se pueden agregar elementos de forma remota. variable:%gentoadd  Si %gentoadd no coincide con *gentoadd*  Array-push. Los productos están separados por una coma en lugar de cambio de línea. Si es así. pero eso no afecta a los sistemas de alerta. simplemente se añade en la posición siguiente del último elemento que la matriz tuviera. se mostrará como un elemento con varios números separados por comas.5. sólo con la adición de una etiqueta de lista genérica/universal. Después de eso. es decir.El botón para añadir un nuevo elemento no es muy complicado. usa Array-push para añadirlo a la matriz. que es nueva (antes yo solía usar una app indpendiente con widget). Se inicia mediante la acción Consulta-de-variable para preguntar al usuario por el elemento a añadir. queda casi garantizado que la matriz sea menor que eso. con el formato 1. El concepto básico es el mismo. Pero tengo otras tres otras listas específicas (casa. se convertirá realmente en el número 11. por lo que tendría que asumir los necesarios cambios. que están adaptadas a cada lista. por la mañana) que también utilizan este sistema de matrices. La tarea es la siguiente:  Consulta-de-variable Título:Elemento nuevo. y no en el número 9001. Esto le permite agregar varios elementos de una sola vez escribiendo varios elementos separados por comas. Todas ellas trabajan mediante la lectura de los contenidos del archivo. desde AutoRemote . Al especificar una posición muy alta (superior a 9000).2. Posición 9001. y en esos casos. A continuación. Por lo tanto. nombre:%Gentoadd. Al recibir un mensaje en este formato se activa una tarea que tiene cuatro grupos de acciones idénticos a excepción de las variables y las identificaciones de archivos.3. comprar. La condición Si(If) de cada . pero en realidad no hace falta. en la misma escritura. Archivo:gentodo. Valor:%gentoadd  Escribir-archivo. la comprobación para ver si hay algo en el archivo. Un efecto secundario interesante de la utilización de matrices es que cuando el contenido del archivo se lee en la variable. Una vez añadido. Cada regla tiene un nombre que en realidad no importa. escribir algo. hacer clic derecho en el ratón y enviarlo a mi tarea de listas (que he indicado antes). Para la lista universal. Como he dicho. seleccionarlo y enviarlo a cualquiera de mis listas. el grupo es el siguiente:  Si %arpar2 coincide con genérico/universal  Leer-archivo. La única diferencia es que a la matriz se añade %arcomm en lugar de %gentoadd. Valor:%arcomm  Escribir-archivo.txt a Var:%Gentodo (lee el archivo de mi lista genérica TODO en una variable)  Separar-variable %Gentodo. así que he añadido unas cuantas reglas para el plugin de Chrome.com). Archivo:gentodo.txt. Posición 9001. al final la tarea añade una última acción que es la siguiente:  Decir "Producto añadido a la lista %arpar2" Integración AutoRemote Chrome Hasta ahora sólo he utilizado el plugin AutoRemote de Chrome para copiar texto desde el explorador a mi teléfono .com/watch?v=kM_YWA_tFUQ .grupo es la coincidencia con la etiqueta apropiada. Texto:%Gentodo()  End If A estas alturas ya se sabe lo que hacen todas estas acciones. nombre:%Gentoadd. y un comando como "Compras pendientes". Pensé que sería más fácil para agregar elementos a mi lista.youtube. Separador:. Esto me permite seleccionar texto en Chrome. que incluso me permite ir a cualquier campo de búsqueda (como en google. una para cada uno de mis cuatro listas. Después de los cuatro grupos Si(If). Archivo:gentodo. Es una opción muy útil.  Array-push. http://www. porque ya han sido explicadas antes. hay cuatro grupos de este tipo en la misma tarea. y después de un poco de ayuda de otro usuario de Tasker. Hay algún problema con las matrices globales y los elementos de menú de escena.2b2 y siguientes Ha sido solucionado el problema de discrepancia numérica entre las matrices y el menú de escena. Ambos se han resuelto en la última versión beta de Tasker. donde sí que importa. donde todo se ralentiza significativamente debido a que las variables globales tienen que estar establecidas todo el tiempo. Originalmente había hecho un navegador utilizando matrices y su funcionamiento era demasiado lento. pero en un artículo posterior voy a mostrar cómo hacer un explorador de archivos basado en Tasker. y la tarea de la solapa Tap en el elemento de menú de escena debe quedar así:  Si %select_indices no coincide *select*  Establecer-variable %Gtselected a %select_indices  Separar-variable %Gtselected. El cambio en la lista TODO es que ya no hay que agregar 1 a %gendelete. Eso apenas importa en una pequeña lista de tareas. lo que implica que la próxima versión también incorporará esas correcciones. Separador:. la iteración actual funciona muy bien. pero ya sabemos varias formas de acelerarlo. resultó que las matrices eran extremadamente ineficientes en esa situación particular. Esto podría ser un problema grave. .3.(1) Actualización: Tasker beta 1. al menos para mi uso. Aun así. y también el problema de des-seleccionar el último elemento.  Establecer-variable %Gtselectedd a %Gtselected(#)  Else  Establecer-variable %Gtselectedd a 0  End If En conclusión Las matrices y bucles For permiten ahorrar mucho trabajo. . look at the screenshots and see which matches what you have. or connecting to a certain WiFi network are all examples of contexts which can be used to trigger a task. Contexts and profiles A context is a trigger. projects. so common mistakes like confusing “task” and “action” can throw someone completely off. read the original version of this article. since it’s in many ways a new app. but it looks and is organized differently. If you need to use those settings in more than one task. or it can have hundreds.Beginner’s guide to Tasker. Tasker have over 200 basic actions. It’s available here. When reading through the over 100 (and counting) Tasker articles on the site. as well as the rest of the guide. A task can have a single action. and so on a certain way. you might have a set of actions that set screen brightness. Tasks. part 1. and then simply run that task from within the other tasks. screenshots. these terms will be used to refer to very specific things. Tasks can be triggered either by contexts. and just adding this one on top. contexts. and if you’re using Tasker with the old UI (i. like how the Media Controls action has five different options for which button it should emulate. and it allows you to reference a set of actions from different tasks. like through third party apps. variables. or directly using shortcuts. So. you can turn them into a task of their own.e. and actions These seven terms are important to understand in order to use Tasker. A part 0 has been added to the guide. so that a task can have several actions that run individual tasks. a thing that the app does. Tasks can also be triggered with actions. volume. I wanted to post an updated version. Linking actions together allows you to do some truly amazing things with Tasker. This part of the guide therefore jumps straight into talking about how Tasker itself works. Tasks Actions are grouped in tasks. and videos from that guide are now hard to follow. instead of having to copy each individual action. talking about what Tasker is and how you can go about learning it. and other methods. you could for instance use not being connected to your home WiFi as the context. scenes. each with their own actions. if you’re using Tasker with the new UI. and most of them have configuration options that make them capable of doing different things. starting Angry Birds is an action. turning down the media volume is an action.0). Switching off WiFi is an action. If you’re not sure which version you’re using. I wrote a beginner’s guide to Tasker that currently consists of 7 parts. This article contains the same information as the original. profiles. it all depends on what that task needs to achieve. however. Since the old UI is still being used on older versions of Android.5: Tasker basics (New UI) Back in 2012. a lot of the references. . widgets. For instance. things that go far beyond changing a setting or two when you leave the house. If you want the GPS to turn on when you leave the house. read this one. With the UI overhaul that Tasker got a couple of months ago. Actions An action is the most basic part of Tasker. The basic concepts still apply. going back to the home screen is an action. I’m leaving the original article as it is. on an Android version lower than 4. Since this first part of the guide is many Tasker user’s first stop after getting the app. just based around the new UI. the opening of an app. An incoming notification. WiFi settings. and have that trigger a task with an action that turns on GPS. This way you can group actions together into more meaningful tasks. and they don’t restore settings. If you then specify your work WiFi network in the WiFi Connected context. like for instance %Variable1. The variable %DATE will for instance always be the current date. and select Add. you first create your profile with a single context. Another important thing to know about state contexts is that some settings will automatically be reverted when the profile is deactivated. In cases where there are multiple contexts in a single profile. An exit task on the other hand runs when the profile is deactivated. because since event contexts are instantaneous. B) in math. An enter task is the default. or like a variable (X. This is logical. Variables are key . transfer information between parts of Tasker. but leaving the door open won’t make the bell ring continuously. An example of an event context is Received text. By that I mean that if you change the screen brightness in your enter task. A variable is represented by a % symbol followed by a name. Variables A variable is like a virtual text file within Tasker. which when combined. meaning that both contexts have to be fulfilled in order for the profile to trigger. the profile will follow event profile rules. A. it will change it back when the profile exits. or to turn an enter task into an exit task. Think of it as a door that rings a bell when it opens.” They’re always the first part of a profile. It makes the task attached to it run once. then long press on that context in the profile list (tap the profile name to expand it if the context and task is not visible). so if the context is being connected to a specific WiFi network. and then change it to something else using the system settings. contexts can’t “live on their own. A state context makes a profile be active as long as the context is. You can disable this by long pressing on the profile name. but not anywhere else! To add multiple contexts to a profile. Not all settings are automatically restored. Tasker won’t change it back until the profile has been deactivated and then reactivated. but only one event context. so if you were to tell Tasker to create a notification with the text %DATE. So if you change the brightness in your enter task. You can have multiple state contexts in a profile. Receiving an SMS is something that happens instantaneous. There are two types of contexts. and a profile consists of up to four contexts and one or two tasks. which is when you receive an SMS. Profiles with event contexts don’t have exit tasks. which is what makes it an event (there’s no practical difference between when you start receicing an SMS message and you’re finished receiving it). If a mix of event and state contexts are used. and runs when the profile becomes active. Variables are used to get access to system information. context 1 and context 2). it’s practically impossible that two of them happen at the exact same moment. the relationship between them is AND (e. It’s important to understand that Tasker doesn’t enforce anything you specify in the enter task while the profile is active. deciding which task should run when the context triggers. clicking the settings button that appears on top. however. State contexts have two types of tasks. and it’s mostly limited to system settings like brightness. Y. creates the trigger “when I receive a text message while I’m connected to this WiFi network”. To add an exit task to a profile. Event contexts on the other hand is never continuously active. and even work as settings and options. meaning it’s not something that becomes active and then later becomes inactive. long press on the task in the same manner. and then uncheck “Restore Settings”. state contexts and event contexts.Unlike tasks. without you having to tell it that. it will ring that bell every time it opens. you suddenly have a profile that triggers when you get SMS messages at work. An example is a combination of a WiFi state context and a Received Text context. and then it’s done. A profile is what links tasks and contexts together. then %DATE would be replaced by the actual date when the notification appears. enter tasks and exit tasks.g. the profile will be active for as long as the device is connected. This is a very useful and complex feature that I also cover in greater detail in a later part of this guide. As such. the theme I use is the Light theme. More specifically. scenes and profiles as one single app. It’s a good idea. starting with part 2. Scenes A scene is essentially a customized user interface. but unfortunately you won’t find many people referencing this version of the UI when you read about Tasker online. and much more. it also goes without saying that this and any future versions of the guide based on the new UI will be based on the ICS+ design. Think of it as a folder capable of holding all of the above. and projects are also vital when using Tasker’s app export capability. and is a huge topic to cover in itself. The more complex Tasker setups often use multiple profiles. multiple tasks. I’ll be basing this guide on the normal Tasker look. Since this article is a rewrite of a guide for the pre-ICS version of Tasker. and even multiple scenes all working together. by disabling certain features. . since they allow you to export a whole range of tasks.to advanced Tasker use. The Tasker screen Tasker has a beginner mode that is designed to make the app easier to use for beginners. You can user Tasker’s scene functionality to create menus. You do this in Tasker’s main preferences. Projects A project is the final grouping in Tasker. I go through it in other parts of this guide. popups. which is selectable in the UI section of Tasker’s preferences. so I recommend disabling it. You can group all of those together in a single project to stay organized. not beginner mode. settings boxes. so that you can keep everything related to a specific Tasker system in one place. accessibility section. Also. you grab the right part of the screen besides their name (where the enable/disable toggle is for profiles) and drag them down to the trash can that appears. require that Tasker has accessibility access.Knowing the difference between the various terms I explained above is half the battle when it comes to understanding how the UI works. and disable the Show in Notification Pulldown option. there will be a persistent notification icon present in your notification bar. What Tasker requires to work When Tasker is active. This is a system-level access that you have to manually give to Tasker by going to the device’s main system settings. You can also look at this notification in the notification drop-down to see which state profiles are currently active. switch out tasks. add more contexts to a profile. turn enter tasks into exit tasks (or vice versa). . The image above should help explain what everything is. Some features in Tasker. To prevent a profile’s status to show here. but every permission Tasker requires is there for a very good reason. This is to make sure the system will never close Tasker. as Tasker obviously needs to run at all times to work. long press its name in Tasker. This. might sound scary because of Google’s way of phrasing its warnings. It’s the way to import and export items. to delete items. but it’s worth mentioning that holding down or single tapping on parts of the UI is the way to access a lot of features. This is also how you sort items and transfer them to other projects: drag and drop. and it’s not malicious. along with Tasker’s long list of required permissions. go into its settings. specifically the ability to read notifications from other apps. and so on. and so many Tasker-compatible plug-ins are listed as Locale plug-ins. This doesn’t mean Tasker is broken. The configuration for each context. and then explore that on your own. There are dozens of plug-ins for Tasker. not the Tasker dev. some apps have Tasker compatibility built in. go to replicate it. and if you do enable it. Creating your first profile The best way to learn Tasker is to tinker with it and explore. you will have to manually disable it to uninstall Tasker. Being rooted is not required for Tasker. This is another system level Android thing that you can read more about here. and so on. not to mention plug-ins. Tasker can also use root to kill apps. and being rooted can unlock features that are otherwise unavailable on a certain device. or that you did anything wrong. explaining each and every one is impossible. each action is different. The plug-ins can be accessed from either the third party or plug-in parts of Tasker (in the list of other actions/contexts) depending on whether the plug-in was built into Tasker or got installed on the side. meaning that installing the main app also unlocks the plug-in components in Tasker. giving Tasker lots of new abilities. like manipulating the status of the lock code. other than the name of the category they’re listed in. The harsh truth is that if you expect there to be a 20 page user’s guide to every single option in Tasker. The truth is that you’re much better off by reading about how things can be done in Tasker. Each action and context has different options however. The image below explains some of the buttons and options that are fairly common in the configuration screen for actions. and so it’s hard to generalize. You might read about an awesome Tasker creation online. Please note that Tasker taps into so many features that differences between devices and ROMs is sometimes a problem. and is a valuable tool. and install as normal apps. manipulate files. In those cases it’s more productive to complain to your device or ROM creator. Locale. and find that some part of it isn’t working. These plug-ins are available in the Play Store. you’re better off just uninstalling the app right away. and in the process help you understand why something doesn’t work. Furthermore. there’s no practical difference between actions listed in the third party section and those listed in the plug-in section. If the accompanying app is installed. but it does give it more abilities. This also has to be enabled manually. Tasker shares the plug-in system with another automation app.Tasker also requires device administrator privileges for certain features. while skipping those that are more unique to that particular task. . it likely means that the feature you’re trying to use doesn’t work properly on your device or ROM. like I just said. or the person whose creation you’re trying to copy. The availability of certain actions and contexts is dependent on the device and software version/ROM. and with the amount of contexts and actions in Tasker. than to try to copy someone else’s creation step by step. and maybe even how to fix it. That’s because that will teach youwhy something works. The plug-in Secure Settings allows you do access a lot of otherwise blocked features via root. you’re the person who needs to set up Tasker the way you want it. and posts and articles from people around the web are great resources. definitely! The video below shows the creation of a simple state profile with an enter task and (later) an exit task. This article. the more than 100 others I’ve written. My advise is to play around with the various contexts and actions and see what happens. Is it worth the hassle? Oh. I simply cannot emphasize enough how important self study is for using Tasker.There is however some documentation for more or less all the features and settings in Tasker. . but at the end of the day. though often it’s just very quick explanations. so I’m going to dedicate an article to each of these topics. it exists within Tasker. First out. A variable is essentially a virtual text file. If you ever need to import anything into Tasker.txt. in order to be able to understand information written for the old UI. it’s called %variable. Imagine a text file called variable. part 2: Variables In the first part of this guide I covered the basics of Tasker. While there are some notable changes to the UI in the new version. and mentioned that I would go more into variables and scenes later on. What is a variable? Variables are part of many programming languages.So where do you go from here? The banner below links to our Tasker portal page.” Instead of it being a physical file you can move around however. and in many ways they work the same too. Tasker hasn’t really changed.txt that contains the text “Hello World. The percentage symbol is always present at the beginning of a variable name. so the top priority of any new Tasker user should be to understand the basics. in many ways. So far only this first part is available in a version for the new UI though.txt lets . Mathematics also use variables. a programming language. variables. and Tasker is. which has a boatload of articles that you can look at. Both are features that require a bit more explanation than the other aspects in general. so I advise playing around with basic features in Tasker before reading further. and it’s the way that Tasker knows that something is a variable – just like the file extension . Beginner’s guide to Tasker. and instead of being called variable. It also has links to the other parts of the beginner’s guide. please see this video for instructions. or used as part of other actions  Turn the contents of a real text file into the value of a variable  Do math using variables. The value of the variable %TIME is always the current time. you first need to know about the different ways that you can change the value (contents) of a variable. but only text. Some examples include:  Set the value of a variable using an action. %DATE is always the date. participants are internet users. Let’s say you have a variable %hello that contains “Hello World. and knowing how to use these is one of the more important lessons of Tasker In short. Just like a text file. a paragraph from an article – any text. number. but also to control Tasker settings and text remotely. When a variable is used anywhere in Tasker. there are many ways to change the value of a variable. For instance. This value can then be used as a context for a completely different profile. Tasker will replace the variable with whatever the value (content) of the variable is when it executes whatever the variable is used in. The variable value would then increase in numerical value the more times the action is run. This text can be a single symbol.” Why use variables? The purpose of variables is to have a way to store information in a dynamic way. and use that instead of the variable name. in other words. When Tasker then goes to create the notification. .computers know that it’s a text file. instead of having information stored as static text that’s only usable where it’s written. it will check the value of the variable. In fact. the participants are different actions. you can add +1 to a variable every time an action runs. variables share a lot of advantages with the internet:  Information can be shared easily between connected participants  Information collaboration is possible by having multiple participants work on the same information  Information can be updated in once place and still reach multiple participants without each of them having to be updated directly With the internet. without having to go into each context/task and manually change it. a URL. contexts. and so on within Tasker. acting as a counter  Many system settings and events exist in variable form in Tasker. The whole idea is to create a library of information that different parts of Tasker can access. Full list of these so-called built-in variables are here. As such.” Instead. The name that follows the percentage symbol is in a way the file name. the final notification created by Tasker will not read “%hello. a variable can contain text. it will read “Hello World.” You then tell Tasker to create a notification with the text %hello. To fully understand the purpose of using variables. With Tasker and variables. %BATT is always the battery level and so on. This enables you to not only transfer information between different parts of Tasker. The only way to change %BATT is to change the actual battery level by charging or discharging the battery. but are actually built-in variables. they cannot be changed by the user. global. but do not show in the variables tab.  Built-in variables are always all uppercase. your “Away” task will be able to see it. variables allow one part of Tasker to send information to another part. Furthermore. The concept of dynamic text is like document collaboration in Google Documents or other online document editors. Variables for information sharing and dynamic text Variables can be used to share information between parts of Tasker. Furthermore. you can ignore these for the sake of avoiding unnecessary confusion.  Global variables are listed in the Variables tab and will be visible and usable by all parts of Tasker. Exceptions No rules are without exceptions. and built-in. and even between plugins and Tasker. Another task “Away” would hence not be able to use that variable. global variables are listed in Tasker’s Variables tab. If your “Home” task creates a variable %Home. If you have a task “Home” that creates a variable %home. %DATE. These are the variables I talked about above which are built into Tasker and that take on the values of system information. and use it. There are some variables that take the form of local variables. just like an internet user would email another. simply use the corresponding capitalization format. %TIME. Instead of text being a static creation. change it. . For the time being though. as they by definition display a piece of system (generated) information. To use the internet simile from above. To create variables of a certain type (only global and local variables can be user created). and %BATT are the examples I used above. These variables have to start with a capital letter. These can be read by any part of Tasker. however neither local nor built-in variables are. parts of it can be changed out by different independent sources. then that variable will not be available to other tasks. which you’ll run into in scene creation.Variable name capitalization The capitalization of variable names actually changes – and indicates – what type of variable it is.  Local variables are all lowercase and are only available to the task/profile that creates them. There are three types: local. An example is %new_val. collect and process data. Even though I never go in and manually change the Say action’s Text field. %Lazy’s value is “You lazy bastard”.Example 1: My morning message I have an elaborate sleep mode setup that I use every night. it’s simply nothing. and using variables allows me to transfer this information to where I need it. this message contains 4 variables (it used to contain more). You slept for 10. dozens of other actions run. You slept for %Smduration hours.5 hours on a rainy day where I have nothing to do. in hours. The four variables in the message are each the result of work done by other tasks and actions.”  %Todomorningnot is part of my Tasker-based todo list system. If %Smduration is less than 9. the phone will speak the following message: “ Good morning. If I get up after 8. the message still changes. If I get up after 10.  %Lazy’s value depends on the value of %Smduration.  %Norweather is the result of a task I made to collect Norwegian weather data.” If I don’t have any such items.2 hours. This action has a text field into which I type the text I want it to say.5 hours. When I wake up in the morning. I use a Tasker action called Say (found in the Misc category). Weather forecast for today is %Norweather. then the value of %Smduration would be 8. like “sunny” or “heavy rain. You lazy bastard.2 hours on a sunny day where I have items in my todo list.  I can transfer information from one part of Tasker to another. If %Smduration is at least 9. Currently. and store the final results in these four variables. this text field reads: ” Good morning. its value is simply nothing. You have items due in your todo list Using variables in this way here gives me two very important abilities:  My morning message is dynamic. and then the phone reads that message out loud. Before the Say action runs. By using these four variables.  %Smduration is the duration. Weather forecast for today is sunny. Weather forecast for today is rain. . that the sleep mode was active for.” its value is “You have items due in your todo list. If it was activated at 23:00 (11 PM) and deactivated at 7:00 (7 AM). %Todomorningnot As you can see. the phone will speak the following message: “ Good morning. If I have todo list items marked “morning. Its value is a very short description of the weather forecast for that day. %Lazy. which is a text to speech function. You slept for 8. the message the phone speaks in the morning varies depending on these – and here comes the reason for the name “variable” – variables. Example 2: AutoRemote AutoRemote is a Tasker plug-in that I’m particularly fond of. It allows different devices to talk with one another by sending each other messages that are not visible to the user. It allows Tasker on one device to talk to Tasker on another device, without using a communication method that is meant for something else – like SMS or email. Incoming messages through AutoRemote can be used in two ways: as triggers, or as information sources. If it’s used as a trigger, you can for instance set up a Tasker profile that activates if a message that says “hello” is received through AutoRemote. This could for instance be used as a “find my tablet” feature, where sending a message with “hello” from your phone to your tablet triggers a task that makes the tablet beep. If the message is used as an information source, the actual content of the message can be transferred to a Tasker variable. Let’s say that you want your tablet to be able to tell your phone the status of the battery. Your tablet could then send the following message to your phone: “ Tablet battery level %BATT percent Where %BATT is a built-in variable. When the tablet sends this message, it will replace %BATT with its own battery level. As such, the message that arrives on the phone will have the tablet’s battery level. The phone would then be configured to look for a message that contains “Tablet battery level.” AutoRemote has an option for whether it has to be an exact match, which in this case we wouldn’t want. This message filter would act as the context for the profile, meaning that the profile would trigger when a message containing “Tablet battery level” was received. This is similar to the “find my tablet” example above, but we want to go one step further here – actually using the content of the message as well, not just use the message itself as a trigger. To do this, you would configure AutoRemote to turn the message into a variable – let’s say %tabletbattery. That variable could then be used in a notification, Say action, or similar. Simply creating a Say action with %tabletbattery as the text, and using it in the profile that is triggered by the incoming message, would then have your phone read the tablet’s battery status out loud when it receives a message from the tablet. Since %tabletbattery is a local variable it would only be available within that profile, but you could easily use the Set Variable action in the Variable category to create a global variable. This is done by setting the Set Variable action to create a variable with global variable capitalization, like %Tabletbattery, and setting its value (in the Set Variable configuration screen) to %tabletbattery. This would then create a global copy of the local variable. In this AutoRemote example, the value of a built-in variable on a tablet is sent to another device using a plug-in, where it’s turned into a variable which that device can use. This is just another example of information transfer using variables, but a more advanced one since it transfers information between devices. Example 3: Minimalistic Text and Make Your Clock Widget Minimalistic Text and Make Your Clock Widget are two independent Android widget creation apps that both have the ability to receive information from Tasker. They both interact with Tasker very similarly, using an action that transfers information from Tasker (either static text or the value of a variable) into the apps’ own variables. I use both of these apps, and I use them both with Tasker. I use Minimalistic Text for my shopping list, by having a widget on my lock screen that Tasker can write information to. The widget only shows something if I’m outside and have items in my shopping list; otherwise it’s blank. The shopping list is handled by my own Tasker-based system. The configuration screen image to the right shows how the action that bridges Tasker and Minimalistic Text is configured. It transfers the value of the Tasker variable %Todoshopping into the Minimalistic Text variable TODO, the latter of which is a variable in a completely different app and as such doesn’t use the % symbol to indicate a variable. Once this task is run, any place where the variable TODO is used in Minimalistic Text (will then show the value of %Todoshopping. Each time %Todoshopping is changed in Tasker, the bridge action has to be run in order to transfer that information to Minimalistic Text. Variables as settings Variables have another use that is perhaps less apparent, but still very important to be aware of: they can be used as settings. This is done by assigning values to variables which are then used as references later. If you have a profile for when you’re home, you can use the Set Variable action to set a variable %Home to “on” when it activates (enter task), and set it to “off” when is deactivates. Any other part of Tasker will then be able to check what value %Home has, and in turn know if you’re home. If you think about it, this is how settings work outside Tasker as well. If you go into system settings and turn off WiFi, you’re essentially setting a WiFi variable to “off” – it’s just a more visual way of doing it. If you’re connected to a WiFi network called McDonald’s, that’s like having a variable for WiFi network with a value “McDonald’s.” Referencing variables: contexts When I say that other parts of Tasker can check the value of variables and act accordingly, there are many ways it can do this. For contexts, the value of a variable is its very own context. It’s located in the State section, Variable category, Variable Value context. The screen you get when selecting this context asks for a Name, Op, and Value. Name is the variable name, like %Home. The variable name you put here is simply the name of the variable which contains the information you want the profile to be aware of and react to. Op is a bit more complicated. It means Operator, and refers to the method Tasker uses to check the value of variables, using a simplified version of regular expressions. You can set it to things like Matches, Doesn’t Match, Maths: Less Than, and so on. In short, the operator refers to the relationship between the third field, Value, and the actual value of the variable. As an example, let’s say that you want a profile that is active when %Home is set to “on,” and deactivated when %Home is set to “off.” You would then use %Home as the Name, Matches as the Op, and “on” (without the quotes) as the Value. The resulting context can then be read like this: “ Activate the profile if the value of the variable %Home matches “on” To take another example, think back to the morning message example above. The variable %Lazy there has a different value depending on whether or not %Smduration is less than or more than 9. If I want to create a profile it’s only active if both those variables are set to 0 – which in turn only happens when the other two profiles are inactive. I explained how the Variable Value context works by using the configuration %Smduration Greater Than 9 as an example. If I want an action to run only when I’m home. I use this system for my location profiles. As you can see. and a value that has to be compared to the value of the variable. The School profile does the same for %School. and when it deactivates. the task simply skips that action. an operator. The resulting context can then be read like this: “ Activate the profile if the value of %Smduration is at least 9 To finish off with a real world example. all I have to do is check the If box. The School profile also has two Variable Value contexts. I use my own variables as settings. type %Home into the first box. One of the images in my first article pointed out the If checkbox on an action configuration screen. the Name would be %Smduration. and %Home Matches 0. and allows you to control the action based on If conditions.) whereas the latter variable is set by a button in a scene I have. That’s from my sleep mode profile. and type 1 into the . select = (Matches) as the operator. Op would be Maths: Greater Than. it sets it to 0 (exit task). If it isn’t. the action will only run if the value of %Smduration is greater than 9. and value would be 9. For all intents and purposes. In the previous section.that reacts the same way. The Outside profile then has two Variable Value contexts: %School Matches 0. and the operator is >. allowing me to manually trigger the Outside profile (by deactivating the school profile) for those rare occasions. The image to the right shows how this is configured. When the Home profile is active. You have a variable name. I’ll cover scenes in the next article. This is for situations when I finish early but don’t go straight home (50 meters away). but to make a long story short. the If checkbox is checked. Both the School and the Home profiles have Variable Set actions on both the enter and exit tasks. 9 into the second. %Home Matches 0 and %Schooloverride Matches 0. which is the symbol for Greater Than. my School profile is active when there’s a calendar entry in my School calendar. too. To be able to make sure that all profiles are indeed mutually exclusive. An If condition is quite simply a condition that has to be fulfilled for the action to run. and my outside profile is active when the other two aren’t. My Home profile is active when I’m connected to my home WiFi. I can use the same system to limit single actions based on the %Home variable created by my Home profile. With the action configured this way. but it’s actually not used as a context in that profile: it’s used to limit an action using an If condition. I press a button that says “School override” and the school profile deactivates. it sets the variable Home to 1. The former makes sure the school profile isn’t active when I’m at home (which could happen if we finish early. Referencing variables: actions It’s not just contexts that can be controlled by variables – actions can be. In other words. If conditions and Variable Value contexts work the same way. I have three profiles that are mutually exclusive yet use different contexts. This checkbox is present for most actions. %Smduration is inputted into the first field. and it saves you some hassle when dealing with case sensitivity. If you input Android into the value field and use Matches as the operator. That way it will only run when the value of %Home is 1. and it really only saves you from adding a second If group that is the exact opposite of the first one. * is a wildcard. . which you can find here. there’s an action in the same category called Else. *Android* on the other hand will match any use of the word Android. / and +. because the wildcard is only in front of the word. so *Android* would not match both. not behind it. it’s important to be aware of the three special characters *. and if you were to create your own Home profile with a %Home variable. it will only match the exact use of Android. This is simply an easier method for applying the same If condition to multiple actions Finally. which only happens when I’m actually at home. not beginners. Any actions following that If action will then be nested under it. and then place it before the first action you want in the grouping. This is an optional action you can use between an If and an End If condition to create a new group of actions (nested under the Else action) which will run if the If condition is not met. where I’ve inserted an Else action for the sake of demonstration. It’s also possible to group multiple actions under the same If condition. The screenshot to the right demonstrates this with one of my profiles.second box. meaning that you can use it to match only part of a piece of text. there’s absolutely nothing stopping you from using a value of “crabcakes” as “on” and “hurricane” as “off. To do that you use the If action found under Task. but it was written for existing Tasker users.” It would simply mean that you would need to set the context/If condition to %Home Matches “crabcakes”. In some cases it’s better to use *ndroid* instead of *Android* because the former will catch both Android and android. *ndroid* here is not necessary because *android* would match with both Android and android. but onlyif it’s not met. but not I like Android very much. run action 6 (Stop) The Else action is optional. run action 3 (Notify Sound) and 4 (Minimalistic Text) If not (Else). I wasn’t aware of this. Please note that the choice to set %Home/%School to 1 or 0 instead of on or off is my own personal choice. *Android would match I like Android. configure it like you would an integrated If condition. I have previously written an article on controlling profiles using variables. For instance. like I like Android very much. Update: Sean points out in the comments that you can use all lower case letters in pattern matching and it will work with everything. It does however not work the other way around. Special characters When doing pattern matching using this method. The way to read this setup is as follows: “ If the if condition is fulfilled. You close the group by inserting an End If action. and follow its condition. You decide what the various states of a setting should be. Much of it is the same as what you’ve read here. which it detects by seeing if the variable value is the variable name. but that’s only half the story. create a Variable Set action for that variable and set it to a space. Inputting 1/2/3 in the value field and using Matches as the operator would match variable values of both 1.” Empty variables Empty variables will not be replaced by blank space. Variable Search & Replace. Note that you should insert the space in the text field last./ acts as OR. Example for the variable %Home: This writes a space as the value of the variable if it’s empty. I did however want to mention it briefly in this article as to not make people think I either forgot or that they’ve missed something. and others. As such. this is a massive topic to cover. they will retain their full variable name if referred to. you use many of the tools available in the Variable category in the action list. and I’m already coming up on 4000 words from explaining the “simple” side of variables alone. . and immediately save without selecting anything else. Examples include a weather forecast announcerand calendar event announcer. Processing data using variables So far I’ve mostly talked about simple ways of using variables to transfer information and control actions and contexts. since more or less any text-based information source online or offline can then be used with Tasker. Unfortunately. If you create a notification with %Variable as the text and that variable doesn’t contain anything. after some of the more basic things are out of the way. This is very useful since it lets you create contexts and If conditions that react to several different variable values. where the If action is configured as %Todoshopping Matches ++.” You can see the use of this in the If/Else/End If screenshot above. Tasker reads this condition as “If %Todoshopping contains at least two letters. What these have in common is that they process information after it has been imported into Tasker. no matter which letters they are. but you’ll also find Variable Section. Knowing how to use these gives you the ability to get Tasker to do practically anything. + means “at least one letter. 2. and 3. For those who have read my older articles about Tasker. Matches as the operator. then the notification will literally say %Variable. and *variable-namewithout-%-symbol* as the value (see the screenshot below to see what I mean by this). Use an If condition with the variable in question as the variable. To do this. meaning that it lets you insert multiple values in a single field. Variable Split is one of the most powerful. in the very first action. To make it display blank space instead. you’ve probably seen some articles which processed data internally in Tasker. essentially taking a single variable full of information and chopping it up into tiny pieces that can be used as settings or as dynamic text. Otherwise you will likely get an error message saying that the field can’t be empty. instead. I want to dedicate an entire article to this topic later on in the series. something that will likely change now that . you’re in the screen for editing the base “canvas” for the scene. so that you can have a button that runs a task. text input. The size and type of scene depends on what you need the scene to do. When the magnifying glass icon is not lit up with a green dot. Creating a scene. and a magnifying glass and ok/cancel buttons on the bottom. It can be a good idea to read through that (old) article after reading this part of the guide to see how it’s implemented in practice and at such a large scale. and then I will go through multiple examples at the end to show how everything works in practice and for different uses. sliders.Nelly is built on pattern matching variables To finish off this part of the guide. Beginner’s guide to Tasker. or a slider that controls screen brightness. images. Scenes can be all kinds of sizes. Currently there’s no way to set the size in pixels directly. You simply drag the edges of the scene to the size you want. a text field that lets you write text to a variable. text. The first thing you see after entering a name is a screen with a box in the middle. is built (more or less) entirely on the concept of variables and pattern matching. I will quickly go through the basics of creating a scene. and so on. Nelly. part 3: Scenes What are scenes? Scenes are user interfaces that you can create in Tasker. full screen like an app. Think of a scene as a box that contains various elements that you would normally find in an app interface. and so on. Scenes have their own tab in each project. and you add a new one by tapping the plus symbol. Normal Tasker actions can be tied to these elements. I can mention that my DIY Tasker-based voice assistant. indicated in pixels on the bottom. like buttons. and be displayed in different ways: As a pop-up box. as an overlay over another app. and Long Tap. with the three options being Normal. The teddy bear button lets you set the touch mode. adding a button to a scene brings up a configuration screen with three tabs: UI. pin. and similarly with the Long Tap tab. color. and they don’t all share the same options. The other two limit the editing to either moving or re-sizing an element. images. You can duplicate an element. “Turning on” the magnifying glass makes a few new buttons pop up. Other than being in tabs like this. there are too many to go into detail with each one. Move. there are a lot of different tabs to be familiar with. as it deals with how the element looks. The Tap and the Long Tap tabs are each their own tasks which trigger depending on whether you tap the button or long press it. The background color picker is fairly self explanatory. but the Tasker help button is available in the element configuration screens to explain how each element works. limit them using If conditions. you will need a grid size that allows for three identically sized buttons. The grid size option controls what grid is used for editing the scene. position. and so on. Adding an Airplane Mode: Toggle action to the Tap tab will result in a button that turns Airplane Mode on or off when clicked. and so on. edge being resize – but on small elements you often only get resize). set depth. If you want three buttons of the same size side by side in the scene. hide. while Label or Text (depending on the element type) are the fields that control what the element will actually display. but I should mention that the unlabeled slider controls transparency/opacity. The UI tab (and background tab where applicable) is normally pretty self-explanatory for all elements. The other tabs on the configuration screen vary greatly depending on element type. Normal means that you can both move and re-size elements in the scene. A few new buttons also appears on the bottom. a configuration screen pops up. which I’ll cover later. actions work like you’re used to. name. With 11 element types that all work differently. but you can also just hold down on the scene to get this option. The examples at the end of this article will also go into detail on how some specific usage scenarios are configured. Scenes can be used for so many things that examples are a better way of trying to explain the potential rather than trying to explain each component individually. icon. which affects the accuracy of placing elements on the scene. all depending on where on the element you touch (middle being move. Variables work fine in these fields. Tap. capable of containing actions. making elements work together is far more difficult than configuring them on their own. You can use multiple actions. Also note that some aspects of how the scene will look are controlled by the action that triggers the scene. Text size. pin it so it can’t be accidentally moved. and I’ll show how that can be used in practice in the examples further down. For instance. In fact. and so on. as some of the examples will show. Triggering scenes . Configuring elements There are 11 different elements that you can add to a scene.scenes have a much bigger role due to Tasker’s app creation functionality. Clicking the menu button will bring up a few options such as grid size and background color. text. specifically a teddy bear icon and a plus symbol. For the most part. and also shows the grid that you just set the size of on the scene. and label are just some examples of options you’ll run into in this tab. When you add an element. delete. Note that Name refers to what Tasker uses to refer to an element internally in Tasker. and whose name indicates what triggers the action. add buttons. This is where you edit the content of the scene. etc. and there are multiple tabs of settings that you need to deal with for each element. set one element to display underneath another. and Resize. Holding down on existing elements allows you to do things like copy. Anything you want to happen (Tasker actions) when the button is tapped goes into the Tap tab. Like with individual actions. each tab is essentially a task. The plus symbol is for adding new elements to the scene. Show Scene options The Show Scene action is the method you’ll most likely use to trigger your scenes and make them appear. they control the existence of a scene. Blocking. Full Display. Full Window  Activity. a scene that is active in the background takes up system resources. here’s a short vocabulary of terms often used with scenes:  Create scene: Starts up a scene in the background  Show scene: Shows a created scene (and creates it if needed)  Hide scene: Hides a scene.The Scene category of actions currently has 20 different actions available. and Show Scene. so you just have to be aware of the double use of the term. and the only two of these four that I actually use. From the Tasker user guide: . Show Scene displays the scene. In fact that is often referred to as creating a scene too. To make this perfectly clear. Full Display  Activity. Show Scene and Destroy Scene are the two most used options. Dim Behind  Activity. but the top four actions are different. Blocking  Overlay. Specifically. Activate and deactivate would have been better choices for names. Normally you’d use Show Scene to make a Scene appear. You can compare it with how an app can run in the background. with Create Scene starting up a scene without displaying it and Hide Scene taking a visible scene and hiding it without actually closing it. Destroy Scene closes the scene. A scene can be active even if it isn’t displayed. and creates it (starts it up) if needed. but still allows it to run in the background  Destroy scene: Closes the scene completely This can be confusing since most people would assume that “create scene” refers to what you do in the scene editor. Destroy Scene. this action actually controls some aspects of how the scene will look. The name “destroy” can be confusing as it sounds like it deletes the scene you created. Hide Scene. The Create Scene and the Hide Scene actions deal with this state of visibility. These four actions are Create Scene. The examples at the end will show a few ways to use these in practice. and Destroy Scene to make it disappear and not run in the background. No Title These 9 Display As option decide how the resulting scene will display and act. but hindsight is always 20/20. Most of them have to do with manipulating elements using actions. but it actually doesn’t affect the saved scene “template” that you created in Tasker at all – it simply closes the scene completely. and in the same manner. so that it doesn’t run in the background either. Blur Behind  Dialog. Full Display  Dialog  Dialog. there is a Display As option in this action that has 9 different states:  Overlay  Overlay. Like I said above. Like I said. Do note that there’s an action called Menu in the Alert category which provides an alternative way to create a dialog scene.  Activity scenes are meant for scenes that work more or less like apps. How it’s triggered . You might want to have a profile that triggers on plugging in your headphones. A scene displayed using a dialog option would be perfect for this. The Show Scene action also has an option to “show exit button. like yes/no dialogs and the likes. and downloading images from the web (example 3). Activities are standard Android app views. My advice is to try the options out and see which ones work the best for you. you will also get some additional options that adjust the position of the scene. What you have here is essentially three display types. so make sure that you have some sort of way to destroy or hide the scene from within the scene before you uncheck this option. Also pay attention to the order of these actions. as the other actions in the triggering task gather information that has to be in place before the scene can be created. you would normally use those options for scenes that you want to act like apps. such as setting an element value (example 1). This is particularly useful for overlay scenes which often need to go over a certain part of the screen. You can really mess up if you use certain display types and disable this without having an exit option yourself. Dialogs are little popup windows which take all user input while they are displayed and can be dismissed with the Back key. As a result. In the examples that follow. not configuring individual elements. Non-blocking Overlays are also displayed over the Keyguard. you have to do additional preparation in the same task in order to properly create the scene.“ All Overlays are displayed over the current application and persist until hidden or destroyed. the difficult part of scenes has to do with making all the parts work together correctly.  Overlays are meant for scenes that display over part of another app.  Dialogs are essentially pop-up boxes. each with three variations. and then pops up a box with several options for apps to launch. You could then make a small scene with music controls. Let’s say you want to have music controls visible while browsing. Very often. Example 1 has the Show Scene action first. With Tasker’s new app export ability. thus requiring the scene to exist beforehand. as the other action manipulates an element in the scene. This shows a red exit button in the bottom right corner which will close the scene when clicked. and display that as a overlay at the bottom of the screen when your browser is active (using an app context).” which is enabled by default. This is a failsafe to prevent anyone from making a scene with no way of closing it. Blocking overlays only block touches on the part of the screen they cover. If you use any of the Display As options that are not fullscreen. pay attention to how the Show Scene action is rarely on its own in the task that triggers the scene. loading text files into variables (example 2). many people find themselves using scenes as configuration screens in exported apps. Do note that display type options sometimes act differently on different devices and OS versions. Example 2 and 3 have the Show Scene action last. which is why I use in this case. Blur Behind as the display type. In this case. When either of those shortcuts are clicked. Every time the slider handle is moved. It’s important to understand that the slider doesn’t know that it’s a brightness slider. In order to make the slider handle be in the correct position on the slider when the scene pops up. Tasker has a built in feature that allows you to run tasks from shortcuts. one on my home screen. which is what the value of the slider will be when the slider handle is all the way to one side or the other. has to do with the display brightness slider in the scene. where the Level field is set to %new_val. The Show Scene action is what I described above. as well as how the slider element works. a task called Show Psett runs. All it does is turn a position on the slider into a value. you have to actually tell the slider where the handle should be positioned. To understand why it’s there. As such. This contains two actions. and the Display Brightness action uses that value to change the screen brightness. This is what the Refresh Br task does. because the slider neither knows nor cares what the current brightness level is. and it runs any action in the Value Selected tab. it’s 255. this tab contains a single action: Display Brightness. and in this case it uses Dialog. the value that the slider lands on when you release the handle is written to the local variable %new_val automatically. the value it lands on is stored in %new_val. When the slider handle is moved. the slider handle will start at 0 every time the scene is created. Refreshing the slider: a lesson in dealing with generic elements The second action. when you slide it all the way. When you slide the slider half way. moving the handle all the way to the right sets the value of %new_val to 255. so my brightness slider is set to go from 0-255. and one on my lock screen. which runs the separate task Refresh Br. For my brightness slider. you first have to understand how generic scene elements work. The result is that sliding the slider all the way up sets the screen brightness to 255. A slider element in a scene has to be configured with a minimum and a maximum value. and Perform Task: Refresh Br. Value Selected is the slider element’s version of the Tap/Long Tap tabs I mentioned for button elements earlier. which is 100%. The other tab in the configuration for the slider element is Value Selected. Tasker runs any actions added to the Value Selected tab. Additionally. the value is 128. and that’s it.The settings box can be triggered using two shortcuts. This is a setting in the slider element’s UI configuration tab. and so on. Screen brightness has 255 levels in Tasker. Show Scene: Popupsett. . By running an Element Value action that sets the value of the slider to the current brightness level as part of the same task that triggers the scene. To put all of this in words. the Tasker dev messed up a bit when he created the Element Value action. in the todo list example below. you want the slider to be 1/4 of the way to max. I ended up changing the system to where only the Show Psett task actually uses that task. As for why the two actions in Refresh Br are in their own task instead of being part of the Show Psett task. Element Value is an action in the Scene category. The Value field only accepts global user-created variables and numbers. so you might run into this situation yourself. So. we want to tell the slider to put the slider handle at the same level that the screen brightness is currently at. the slider will be in the right position when the pop-up box appears. and that means that they won’t always work the way you think they would work. this is what Tasker sees the Show Psett and Refresh Br tasks as: “ Show the pop-up settings scene and move the slider handle so it matches the current screen brightness Where the red text indicates what Show Scene does and the blue text indicates what the Refresh br task does. and so it needs you to tell it that the brightness level has changed without it in order to display that properly.” I copy the value of %BRIGHT into my own variable %Brait. so we can’t use the built-in variable %BRIGHT (which always contains the current brightness level) in that field. I will show you an example of where such separation does have a use. but the slider doesn’t know that. In this case. It’s a weird and slightly annoying bug. but worth noting since a brightness slider is a useful thing to have in a scene. what about the Variable Set action? Well. and to make that happen. that was originally in order to refer to the same refresh task from other places than just that one task. If you’re at 25% brightness. this task consists of two actions: Set Variable and Element Value. and it allows you to manipulate the value of an element using a task. and use that variable in the Value field instead. meaning that it doesn’t need to be its own separate task at this point. However. you need to tell the slider to start there.As you can see above. The important lesson to take from this is that elements in a scene are generic. the slider is used to control the brightness level. In this case. The scene . To work around this “bug. In example 5 you’ll find a use for the slider that proves pretty conclusively that it doesn’t have to be a brightness slider. but you can still see the status bar shining through. In this case. Also note the position of the slider handle. As you can see. text elements. and the slider reflects this – because of the Refresh Br task. It’s a collection of button elements. even though the Display As type is Dialog. and the effect of the Blur Behind option. and the slider would still have been able to control the brightness. Blur Behind. but it wouldn’t have displayed the correct brightness unless it was the one to set the brightness. Top seven buttons . The brightness is set at 25% in that image. the settings box actually looks like it’s fullscreen.This is what the scene edit screen looks like for the pop-up settings scene. the brightness would still have been 25%. That’s because the scene itself covers most of the screen. and finding the right grid size for that to be the case can often be a pain. Without it. I’m using a grid size that allows me to space out buttons of various sizes evenly. and what it looks like when actually triggered. and a slider element. the seven buttons do the following: Run a task that archives the articles I’ve written on this site that day. WebCam image and Todo list. the point is just that I use these buttons to toggle other tasks from a central location. toggles the LED. Most of them have two actions: Perform Task and Destroy Scene. while Perform Task runs a separate Tasker task. Two of the buttons. but are all rather basic. overrides an active school profile using a variable. For the record though. so I don’t have to start the scene up again to toggle it off after I toggle it on.The top seven buttons all do different things. turns my computer monitors on wirelessly. opens my todo list scene. so I want the scene to stay active (not close) when I click the button. opens a “virtual window” scene with WebCam images. turns my computer monitors off wirelessly. Profile buttons . Destroy Scene closes the pop-up settings scene. The actual functionality of the tasks behind the Perform Task actions here isn’t important. The reason why the TeslaLED task doesn’t use Destroy Scene is that it toggles the LED light on my phone on or off. trigger new scenes which are separate examples above. but in this case. the choice not to include a Destroy Scene with those is because I expect to want to continue using the scene after I interact with them. Example 2: Todo list A month ago I gave up on commercial todo list systems and made my own in Tasker.” “Silent mode. the text element would for instance have displayed “Profile: 1. I didn’t go into details onhow I did it back then. That advantage can be seen in the right image. Each button closes the scene (using Destroy Scene). the text element will end up displaying the name of the active profile (this can be see in the screenshot in the “The scene” section above. That button is there for when I use the LED toggle or the brightness slider. which is why I have buttons for them. deactivates silent mode. and then various profiles trigger depending on that value. so that 50% is 128). In order for the Movie Mode profile to be active. sets the variable %Profile to a specific value. both of which uses Variable Value as the context. and so having the scene go away would be annoying. Like I explained earlier. as those two elements don’t contain their own Destroy Scene action. but as you’ve probably seen. The scene elements (buttons in this case) set a variable to different values. it only does one thing: Destroy Scene. as most of it happens in a scene. These buttons simply set the brightness to the specified level (measured from 0-255. They’re designed to be activated manually. How it’s triggered . but I will now. Brightness controls I already explained how the slider works. As for the OK button. this profile button setup demonstrates how you can activate and deactivate entire profiles using scene elements. there are also buttons present that set the brightness to specific values. where the text element is set to display “Profile: %Profile.” and “Movie mode. and then destroy the scene. Had I sued 0/1/2 instead of Normal mode/Silent mode/Movie mode as the values.” That little lesson in variable value naming aside. and in the case of the Normal mode button.” Movie mode and Silent mode are separate profiles altogether. using a (complicated) text value has one big advantage.” In the previous article I talked about advantages of using number values instead of text values for variables that are used as settings. the value of %Profile literally has to be “Movie mode. The values that %Profile is set to in this case are literally “Normal mode.” Since the value of %Profile is the full name of the currently active profile.The three profile buttons control a profile system that is separate from my automated profiles that I talked about in part 2 of this guide. the morning list when I get up. one for each list. The fourth action is a Wait action. and the home list (listed as “after school” in parts of the system) when I get home.The todo list system currently consists of three lists. These actions read the text files and turn them into variables. The task itself is triggered from the pop-up settings box in example 1. It simply delays the rest of the task by half a second. the purpose of which I’ll get into later. These lists are stored as physical text files on my phone. but Tasker needs these to be variables to display their content. Blur behind. the first three actions in the task that triggers the todo list scene are Read File actions. The scene . The fifth and final action is the Show Scene that actually makes the scene show up. As such. using the Perform Task action. each for a different situation. I get notified of items from the shopping list when I walk outside. the Display As setting is set to Dialog. Like the previous example. For me. it would have written to the file every time a new letter was put in. Point being. just like how the slider runs all actions in the Value Changed tab when the handle is moved. or Morning respectively. Inputting “apple” in the field would then result in a file like this: “ aapappapplapple I can’t emphasize enough that making everything work together is what’s difficult with scenes. After it has saved the text to a file. I don’t actually think I even need to do that. there will be a variable %todotitle that contains whatever was typed into the field. tag buttons. for each and every letter). The problem with this is that if you’re typing. The Save button is where the actual magic happens. Each time you input something in the text field (i. The point of this is to refresh the entire scene in as simple a . it appends the corresponding text file with the value of %todotitle (plus a line shift) depending on the value of %todotag. and this is just another example.e. The important lesson here is how the use of a separate Save button means that I can put the actual Write File action out of reach of the “rapid fire” Text Changed tab. as it would then repeat all preceeding letters as well when it wrote new ones.This is what the scene looks like in edit mode and in actual use. but you couldn’t use the append option for adding the text to the end of the file. with some examples thrown into the latter for good measure. Next up is the tag buttons. Home. Text input field. there’s only one action. If I had put Write File in the Text Changed tab for the text input field. and runs the task that triggers the scene all over again (the one described at the beginning of this section). Not only could that cause problems for the system. It also runs all actions under the Text Changed tab in its configuration screen. When clicked. These are very simple buttons that set the variable %Todotag to Shopping. In other words. when I’m done typing into the text field. I advise that you keep the number of actions in this tab to the bare minimum. and save button Text input fields work a lot like slider elements. and the three fields at the bottom are text fields. but I have an old habit of using user created variables. you’re going to run those actions a heck of a lot of times. it writes the content of the text edit field to the local variable %new_val. it destroys the scene. It filters this using If conditions on the Write File actions. As such. The field between Title and Tag is a text input field. whatever you wrote in the text input field is added to the text file for the list you selected using the tag buttons. which transfers the value of %new_val to my own variable. %todotitle. Text elements The bottom part of the scene consists of six text elements: fields that list the contents of the three todo lists. The Tap action for each text element is top open the corresponding text file. The labels are static. The save button also has a second use. They’re the variables that are created by the initial task that creates the scene. in this case a simple Destroy Scene action. Instead of adding a separate button. clearing the text input field and updating the text elements so that they display the new content of the text files. so I added one. and contain the contents of each of the todo lists. each of the three text elements contain the text stored in the text files. but it’s nice to have the option. triggered by holding down the button instead of just quickly clicking it.way as possible. This is done by adding actions to the Long Tap tab. Whenever the initial task is run by destroying the scene and running the initiation task again. Since clicking the button will make the scene reload. I simply added a second use for the Save button. I very rarely have to do so. and this is frankly just a very quick and simple way of adding a way to edit todo lists. This is where the 500ms delay comes in. but the lists are dynamic. as I normally clear the entire list at once. This opens it in whatever app is set to open text files. . I needed a button that actually closes the scene. each list has a variable as the content of the Text field. In other words. I had trouble with the scene not reloading properly when doing it without a delay. and corresponding labels on top. Sometimes you just have to manually give tasks a bit of breathing room by adding wait actions. these variables are refreshed. First of all. It starts off by reading the text file that contains the list into a variable. the variable will contain only a space (ref. one you can modify the looks of even. or if it overwrites the file. Action 4 in the list above creates a notification with %Todomorning as the text. As explained in the previous article. I do this . ++ means “at least two letters. by using the Menu action I briefly mentioned earlier. The Menu action technically creates a scene. it displays a new dialog scene the quick and dirty way. the todo scene is destroyed. like %Todoshopping.” which is true when there are any actual items in the list. but is limited by this If condition. The append option for Write File decides whether or not the new text is added to the end of the file. The purpose of this task is to check the morning todo list and notify me if there are any items in it. If I had written nothing to the file. and I want the spoken message that I get when that happens to mention if I have any items in my todo list. First. The Save button Write File actions have append enabled. This Menu scene asks if you want to clear the corresponding todo list. This Todo Morning task runs as part of a much larger task that runs when I get up in the morning. The non-scene part of this list Since I know for a fact that there are people out there who tried to make a todo list system like mine and failed. then the variables created by Tasker when initiating the scene would have been blank. then recreated to refresh it. If I had used Delete File to delete the file. but this one doesn’t. and then the initial Long Tap task continues. but the other component to the puzzle is a way for Tasker to check it and act based on it. and restarts/refreshes it using the same method as with the save button. The Yes option writes a blank space to the corresponding todo list text file. as it’s supposed to clear the list. closes the todo scene. There are a couple of reasons why I write an empty space to the text file instead of writing nothing or deleting it. the way I clear the list above). Action 2-3 are not really relevant. but you configure it via the action’s own options. Yes and No. As such. with append unchecked. it only creates the notification when there are items in the list. like here. If that list is empty. No destroys the Menu scene. not the scene editor. I’ll also briefly mention the side of this system that isn’t scene related – just for the sake of not leaving it half done. but I’ll explain them for the sake of not leaving any questions. In other words. There are two options in this Menu scene. this causes Tasker to literally display the name of the variable where the variable is used. As a result. instead it would show the name of the variable. What this scene does is to give you an interface for creating and managing the todo list. I can use an If condition for %Todomorning Matches ++ to check if there are any items in it. After you click yes.The Long Tap task for each element does three things. then Tasker would have given me an error when it tried to read the file into a variable as part of initiating the scene. It’s quicker when you just need to create a quick dialog scene. The image above shows my Todo Morning task. but not true if there’s only that one single space. an empty list wouldn’t display as empty in the scene. but I didn’t go into much detail. Example 3: Virtual window WebCam scene My virtual window has been the topic of a short article before. The Display As type in this case is Overlay. a notification will be created. The scene itself contains images that have to be downloaded from the web. and because of this. The final result is that if the list contains any items. and my morning message will notify me of it. Blocking.by setting the variable %Todomorningnot to “You have items in your todo list” using the same If condition as action 4 above. The scene . the Show Scene action is at the end of the task. there will be no notification and no message. The three actions before it are HTTP Get actions. If the list is empty. %Todomorningnot is then inserted into the Say action in the main morning task. or the scene would load the old images. Action 2 makes sure that this variable doesn’t contain anything if the If condition is not met. The images are saved to a specific path. this is also all about the scene. In this case it doesn’t really matter though. How it’s triggered This scene is also triggered by a task linked to one of the buttons in example 1. so that each time the task runs it overwrites the existing images. It’s imperative that the Show Scene action is run last here. which are used to download the images. Just like the todo list. You could for instance create a scene that shows today’s new web comics when you click a button. each of which uses one of the downloaded images as a source. so I thought I would create a simple video to show how all of this looks in practice. This is a very simple scene from a technical point of view. it keeps the same layout. similar to notification LEDs on some devices. and you can’t tell a black bezel from the screen when that’s the case. but it wasn’t quite as…elegant as it could be. Each image also has Destroy Scene as the Tap action. which has many applications. That means that tapping any of the images will make the scene go away. in such a way that it appears as if only the part of the screen with the logo actually turns on (which is in reality what actually happens as well. and even though it loads newly downloaded images each time it’s displayed. There’s a lot that goes into making everything in a scene work the way it should. The images have been moved and re-sized in the editor. Example 4: Gmail notification The first three examples are all fairly standard uses for scenes.The scene is as simple as it gets. and all the magic is done with Tasker scenes. and that worked well. especially when there’s a lot that has to work together. This one is not. due to the way AMOLED technology works). it’s all quite simple when you actually get to where you can use it. Examples 1-3 in practice Examples 2-3 are triggered with buttons in example 1. but I use it a lot. It all started with a wish to add a more visible notification for incoming emails. As you can see in the video though. It also demonstrates the use of dynamic images. . My Galaxy S II has an AMOLED screen. I came up with the idea of having a Gmail logo be displayed on the screen. It has three image elements. and one of the advantages of such a screen is that the color black is created by turning off the pixels. Black pixels are therefore just the screen being off. The video below is the result of this idea. I experimented with using the camera LED. This event notification is further filtered using three state contexts.How it’s triggered Part of what makes this example so different is how it’s triggered (or perhaps controlled is a better word in this situation). to be exact. The main one is an event context for any notification from the app Gmail. Now. this time for a completely black scene. First of all.” the Home profile has to be active. . No Title. The display type is Overlay. In other words. so that it doesn’t start interfering with me using the device. this scene is triggered automatically using a profile and a context. and the display has to be off. Full Display. The first of these is to prevent the profile from being active when I sleep. Full Display. The second is to make make sure it only runs when I’m home (I have a different Gmail notification system for other locations). The variable %Sleepmode can’t match “on. The second action is another Show Scene. The third is to make sure it only runs when the display is off. with display type Activity. The first action shows the Gmail Notification scene. Four contexts. this context is triggered if Gmail receives a notification. Blocking. to the task that creates the scene. which is the Gmail logo on a black background. which is only when it receives an email in my case. and clicking it will bring you to the Gmail app. that one’s a Wait action which decides how long the display will stay on for (as action 5 is System Lock).So. it waits for 6 seconds. it loads the Gmail app. Since I initially created this system. Then it destroys the two scenes used to create the notification. as you’ll see further down. this might very well be devicedependent) the Overlay display type wasn’t capable of turning on the screen of my device. The Gmail Notification scene has the Gmail logo. the notification switches to three one second vibrations instead of this setup. Finally. Next. First. this is a fairly peculiar use of scenes. On to action 3. and that’s about it. Like I said. and I can now use the Secure Settings plugin to wake the device. with the screen pointing towards me. There are however quite a few actions tied to the Tap task for the image. When all of this works together. leaving it visible. this time to make sure that the lock screen animation has time to finish before the two scenes are destroyed with actions 7-8. you get the result in the video above. I’ve rooted my device. Still. Action 6 is a new wait. The scene The two scenes here aren’t very interesting in themselves. The Gmail logo is clickable. allowing me to actually read the email that came in. I don’t tend to fix something that’s not broken. and it will actually cover the entire screen with a black box. but its definition of Full Display doesn’t include the status bar. when I’m not home. . so having a visible notification is great. I found that (on my device and ROM. and then clears the %Gmailactive variable. it sets the %Gmailactive variable. meaning the pixels will stay off on an AMOLED screen. but it’s also one of my favorite Tasker setups. My phone is normally sitting in a DIY cradle on my desk when I’m at home. so action 4 is there to prevent the rest of the task from running (and in doing so. why two scenes? In my testing. For the record. resetting it for next time. The Activity display type is. which in turn controls the Stop action I mentioned above. and the non-root method is a better example of how you can use scenes creatively. The variable that the Stop action has an If condition for is set when clicking the logo. Being able to limit it to when I’m at home and not using the phone makes it that much more useful. turn off the screen) if I do indeed click the logo. By using two scenes – one of each type – I managed to get a scenario where the scene will turn on the display. you need to use the dialog display type to make your own lock screen be on top (if that’s what you want. the split second you have to wait when using the Screen On context isn’t too bad. bottom line. pattern unlock screen) below your Tasker-created lock screen. You then get a scene that appears quickly. The alternative is to trigger it on Display Off. which is an event context. with scenes and systems I know well. How it’s triggered Since we’re talking about a lock screen. any dialog scene also turns the screen back on. but not if it (and the time) is from back when the screen was turned off. If you’re not overly picky about it though.Example 5: Lock screen using scenes The previous examples have all been from my own Tasker setup. making that part faster. That means it’s useful for checking the time quickly by turning on the screen if the scene is created at the same time. You can half fix this issue too. For this last one I’ll do a reader request from a previous Tasker article and create a lock screen in using scenes. which is then updated after a split second. so when you lock the screen. any elements in the scene will have been created when the screen was turned off. The problem with that is that since it takes a few milliseconds to show the scene. This method does however also have its disadvantages. of course). but with the wrong data. The second problem with using Screen Off is that if you have a security lock screen (e. and might be outdated by the time you turn it back on. it will create a scene that turns the screen back on. You then end up with a lock screen that flashes briefly when turning the screen on. So. and use it to update the time-sensitive elements by using the various element update actions in the Scene category of actions. which resulted in a “static clock” that displays the time that the scene was created (but doesn’t change on its own). the logical thing to do would be to trigger it on Display On. you get this lag effect when using that context – at least on my older Galaxy S II. I added a simple text element with %TIME as the text to my test lock screen. Unfortunately. This might seem backwards.g. both of these methods have issues. by adding a System Lock action after the Show Scene action in the task. but the advantage is that the scene is then ready to go when you turn the screen back on. As you’ll see later on. First off. It is however possible to half fix this by adding a profile that does trigger on Screen On. . I added a static image of my dog. me included. If I were to actually use this though. Situation-dependent lock screens While I don’t plan to replace my WidgetLocker lock screen. but from what I’ve seen of the developer’s response to user feedback there isn’t much hope. In closing This has been a very long part of the guide. Finally. Why? Slide to unlock! When you slide the slider past 90% to the right.” It’s a simple text element with %TIME as the text. Then I went to the Value Selected tab and added a Destroy Scene action with the If condition %new_val Maths: greater Than 90. all you have to do is link a task that triggers it to your preferred context. That’s simply because the scene feature has so much potential that I think it’s easier to understand how it works by seeing real life examples. and using those to control which scene is displayed is as easy as having multiple Show Scene actions with If conditions. as I explained above. I added an action to open the Gmail app as a Tap action. with a stronger focus on examples than on theory. like owner information and the likes. Adding an actual email counter (or SMS counter for that matter) is not a problem. work. The next part of the guide will cover data processing using variables. the more you have to update using a second profile if you should choose the Display Off option for triggering the scene. You also have %DATE. I started out by adding a slider. outside. and so on. which is something that opens up for a whole range of new uses for Tasker. Many people. Why WidgetLocker doesn’t have profiles is something I can’t fathom. there are a lot of minor things here and there that makes each scene unique. You can easily create multiple scenes for different occasions. Next I added a Gmail logo by inserting an image element and using the Gmail app logo. Just remember that the more dynamic content you add. like one for home. . and setting it to go from 0-100. it destroys the scene. just to fill the screen. as well as a Destroy Scene action to close the lock screen when doing so. Since I don’t plan on using this lock screen system myself. As you’ve probably noticed though. have profiles for various locations and situations. using scenes as lock screens isn’t quite there yet if you ask me. Once your scene is done. picking the Tasker icon as the handle (or thumb as Tasker calls it). Using a large text size makes it look like a widget. Despite that though. but it’s ridiculously close for something that wasn’t designed for it. and a ton of other built-in variables to help populate your lock screen scene.” Next I added the “clock. from having to pre-load data before creating a scene to using multiple scenes to combine their advantages. %BATT. I would have used the rest of the space for something else. there is one advantage of this scene system that makes me very tempted to do just that: Having situation-dependent lock screens. and the screen “unlocks.Creating a lock screen scene Now this is where the fun begins! There’s so many things you can do to create a lock screen in Tasker. and the end result can be pretty impressive. I cheated and added static text to display new emails beside the icon. school. Pocketables articles. creating your own contexts. you name it. The examples will focus on data gathered with HTTP Get though. If you see some text. . but it’s as good a term for this aspect of Tasker as anything. Weather data. where we can work with it. Data sources To really understand the power of variable data processing you first have to realize how many potential data sources there are out there. I have multiple profiles and tasks that use this in my Tasker. The chaos of text that greets you when you look at the source can be frightening at first. moon phases. There are many ways of doing this. in other words – and working on it until you get what you need from it. I’m referring to how you can work with data stored in variables. rules for how to lay out the page. horoscopes. and some of them have been posted on this site before. allowing you to see what the computer sees – the web page in pure text form. it can also be extremely useful. HTTP Get. text documents – all of them are potential data sources. The calendar event announcer and the weather forecast announcement system are both examples of variable data processing. It’s more of an implied feature than the previous topics. exported calendar data. CTRL + U brings up the page source of a web page in most web browsers. It’s all about taking some data – text. Want to create a profile that is active when your horoscope mentions money? No problem. but it’s also (in my opinion) one of the most powerful features in Tasker.Beginner’s guide to Tasker. and so on and so forth. but as you’ll see further down. a mixture of references to images. Get Voice. extracting information from it. Variable data processing? I’m kinda making up terms here. it’s time to dig into something a bit more specific: Processing data using Tasker variables. and Variable Query – all of which are actions. text. and so on. By variable data processing. and the most powerful. More or less anything that is stored in text form can be used in Tasker. local news. but some of the most important ones are Read File. Reading data into variables The first part of any system based on outside data sources is to get the data into a variable. It’s also important to understand the difference between what you see and what a computer sees. it’s all about knowing how. part 4: Variable data processing With the basics. and scenes now all covered. A web page is seen by the computer as pure text. as that’s the hardest to work with. variables (in general). Websites. you can most likely use it in Tasker – it’s that simple. the top two being Server:Port and Path. meaning you have to copy the contents of %HTTPD to another variable. though I should point out that simply using HTTP Get to populate the built in %HTTPD variable is the “proper” way to do things – when it works. It’s always a good idea to do this type of Tasker setup in front of a computer.g. the contents of this URL should then be available in %HTTPD after the actions runs. %HTTPD. are located in the Variable action category. the job of actually turning it into something useful begins. the variable becomes an epic mess of text.com Path: 2012/09/beginners-guide-to-tasker-part-3-scenes. This is the foundation for a DIY voice assistant like my Nelly. %VOICE. and as such. for instance. Often. the URL http://www. These are all actions that manipulate the content of a variable. especially if you load entire web pages into a variable. but I will cover the most important ones. leaving you with just as many actions as if you use HTTP Get and Read File. as it allows you to load web pages into variables. pocketables. use the Output File field to save it to a file (e. so that you can have the full text available in front of you. like the contents of a text file. For instance. I won’t cover all. have the source code (CTRL + U) of the page in front of you to get a better look at what is in the Tasker variable. which is then turned into text and stored in a variable.  HTTP Get is used to get (the source text of) a webpage into a variable. In such cases. and the rest in the Path field. HTTP Get HTTP Get (found in the Net action category) is perhaps the most versatile data collection action of them all. As a general rule. combined with Read File to get it into a variable. Next up I’ll cover some of the most common tools you’ll be using when working with the data.  Variable Query pops up a dialog box asking for a variable value.html In theory.pocketables. It does however have some quirks here and there. it loads the contents of the web page into the built-in variable %HTTPD. On some devices however. you’ll see several fields. You’ll see me do this in the video in example 2.txt) and then use Read File on that file. URL archive. to actually work with the data you have to have it in a user created variable. If not. Then again. like mine. Data processing tools Once you get the data into a variable. In examples further down you’ll see this approach a lot.pocketables. In the HTTP Get configuration screen. In theory. Great for things like quick todo list entries.com/2012/09/beginners-guide-to-tasker-part-3-scenes. and so on. Tasker-based accounting systems. If you’re working with a web page.com) in the first field. Read File reads a file stored on the internal memory into a variable. using HTTP Get’s option to save to a file. Variable Split . %HTTPD simply doesn’t contain the right data (or any data) after using HTTP Get. is an excellent workaround. put anything before and including the domain (like .html Would be split into these two fields: Server:Port: http://www.  Get Voice is used to listen for voice input. as we can use these tags as splitters. you just met the single most important action there is for this kind of Tasker setup. All the tags that are used to assign formatting to specific parts of a web page can very often be used as splitters as well. individual pieces.hockey. Variable Split could just as well be called Variable Chainsaw or Variable Ninjasword. Looking at the source in a browser (which is also what’s in %Pocketables at this point).) as the splitter. both links and titles. If there were 20. Name is the name of the variable you want to chop into pieces. you would get the following variables: %Hobbies1: football %Hobbies2: hockey %Hobbies3: swimming You just used the commas as points to split a single variable into smaller. let’s take a look at pocketables. the “chainsaw” will target all of the commas and cut the variable in those spots. we could assume that it was used all over the place. allowing you to grab parts of a web page much more easily than you’d think from seeing just the text. The actual splitters will be destroyed in the process. as what it does is that it cuts/slices variables into pieces. or split a news site into just the titles. If there were 175. which means it’s only used before each of the ten articles on the front page. For instance. In this case. By choosing the right splitters you can chop huge variables containing entire web pages into small. This method is the alpha and omega of variable data processing. each containing a piece. Let’s say that we want to create a list of articles currently on the front page. manageable pieces that contain just the information you need. This is where all the “weird” text in a web page comes in handy.com. we see that there are only 10 occurrences. but Tasker sees this code when you load a web page into a variable like this. we see that the link to each article is immediately preceded by <h3><a href=”. As an example. let’s say you have a variable %Hobbies that contains the text “football. and Splitter can best be described as the point in the variable where you want to split it. You can split a weather website into variables that contain just the weather forecast. we see how each article is listed in the source code: All the tags (like <h3>) in between the text are what decides how the page looks to you – it’s like a guide for telling the browser how to display the page. we could assume that it was used twice for each article.Congratulations. By using the source on a computer together with CTRL + F (find text on page). This creates new variables that are numbered derivatives of the original. By using CTRL + F in a full browser and searching for <h3><a href=” in the source. You see the visual result. In this case. This is a good thing. We want . you can feel your way to finding a good splitter. We load the page into the variable %Pocketables. It has two relatively simple configuration fields: Name and Splitter.swimming” If you then use a comma (. %Pocketables421. This means that if we split each child variable again using this splitter. As you can see from the image above. and only the URL. as you can see. hence giving us one child more than there are splitter occurences). here’s a code snippet with relevant parts highlighted. The three pieces of red text are the various splitters used. which contains just the title of the article. Using the same method as we did to get the URL by itself we split %Pocketables42 using the splitter “>. the first of the second generation child variables will contain the URL. This variable starts with the title of the article. but rather the first child of the %Pocketables4 variable. An example of such a variable would be %Pocketables41. the URL is immediately followed by ” title=”. and purple/pink is the third generation child (%Pocketables421). %Pocketables4 would then for instance contain all the text between <h3><a href=” number 4 and <h3><a href=” number 5. this is still a lot more text than what we want: However. . This is not the 41st child variable. which is the text immediately following the title. <h3><a href=” would give us 11 “child” variables (as the first child variable would contain what’s before the first occurrence of the splitter. and in this case. and then has lots of “garbage” at the end. blue is the second generation child (%Pocketables41 in the example). To summarize. %Pocketables42 will then contain everything following ” title=” up until the end of the original %Pocketables4. We’re then left with a third generation child.the splitter to be as exclusive as possible. The text at the end is just a shortened version of all the garbage that we cut away. ” title=” might have seemed like a good option for an initial splitter. Like I said. The naming scheme %Pocketables/2-11/2/1 created by the example method above. your second generation variables will start to be named the same as first generation variables. you don’t want the second generation %Pocketables11 overwriting it when it’s created. and so on. My advise is to stick with the “manual method” until you’ve mastered it. and have Tasker open a URL while speaking the title of the page it’s opening.html” title=”TV Show Favs for Android hits version 3. I should point out that it’s possible to automate the process of splitting multiple variables multiple times. %Pocketables11 can be the 11th child of %Pocketables or it can be the 1st child of %Pocketables1.com/2012/09/tv-show-favs-for-android-hits-version-3-0. doesn’t have this problem. since it immediately precedes the title. The variable %Pocketables above is an array containing %Pocketables1. That creates a lot of actions and a lot of variables. and remember that every split creates variables you don’t need. You here have two variables that can be used directly elsewhere. which is why it’s not a bad idea to have a version of the text you’re splitting open on a computer while you’re working.0“>TV Show Favs for Android hits version 3.pocketables. but just be aware of the side effect and make a choice based on that. which are essentially base variables with childs. on the other hand. That combined with CTRL + F to find text makes it so much easier to “cut the right spots. I won’t go into the use of arrays in more detail however.0</a></h3> By using this simple splitting method. which is why you should play around with what splitter you use. Keeping track of all the child variables is often very hard. which can be smart if you need to refer to the resulting variables in other tasks and don’t want to copy them into global variables.“ <h3><a href=”http://www. Not only is this harder to deal with than a static naming scheme. It is then possible to specify a set of actions that will run for each variable in an array. there are (at the time of this writing) 99 occurrences of that splitter in the source code for this site’s front page. for instance you could have a Open URL action with %Pocketables41 in the URL field and a Say action with %Pocketables421 in the text field.” Variable Section . unless you’re doing a ridiculous amount of variables. I used global variables in the example. Also note that if you split into more than 10 parts. However. using Tasker’s For action. as it’ll further complicate an already complicated topic. In this case. it’s a mess. which essentially loops an action for each available specified variable or value. If the first generation %Pocketables11 is important. Besides. but common splitters in web pages often vary in numbers as the page is updated. which means that you would have to hunt around for which 10 of those 100 actually precedes a post title. Had you for instance been after only the title in the example above. This is done by using arrays. For instance. as those won’t end up populating the Variables list in Tasker. you would need to do this splitting process 10 times in order to get all 10 front page articles into separate articles. As such. %Pocketables2. you can chop up data into the chunks you need. meaning that tomorrow it might split away something completely different. You would then end up for for instance %Pocketables57 and %Pocketables71 as the relevant first generation children. like for instance all children of %Pocketables. It’s sometimes wiser to split multiple times in order to create lower numbered children instead of trying to cut as close as possible the first time around. it’s wise to use local variables (lower case letters) for this type of work. the “manual” way can often be easier to keep track of. Very useful if you don’t know the length of the section. In practice. for instance choosing 5 here would just fit the word “apple. which would be 13. and don’t have experience from anything that uses actual regular expressions. but it’s not the only tool. The second is the character number you want to start at. but it’s an alternative that can often save you a lot of work. According to the Tasker developer this has been on the todo list to fix for several months now. You could end up with variables in the form of %timesplit1. and end up with a %timesplitx that is 13:30. this will make it that much more complicated to use. Length is the length from that character that you want to include in the sectioning. so you don’t try to section ten characters of a five character variable. not the variable content. or because the splitter you would have to use is so ridiculously common that it would somehow create issues. what’s this feature for? Well. Variable Search Replace Variable Search Replace is a relatively new feature. it’s . you choose 4 here. it’s a feature that’s frankly still in beta. The Variable Section configuration screen has five options to be aware of. but instead it sections based on character numbers. respectively. Problem 2 is that it doesn’t support variables. %timesplit2. . let’s say you want to split the time (hours and minutes) out of a variable like this one: “ 13:30:52. you could split with a colon as the splitter. So.000-04:00 Sure. 30. it will use the variable name. OR you could simply use Variable Section from 1 with length 5 and get a variable with 13:30 right away. Unfortunately it doesn’t section based on splitters.Variable Split might be the most important tool available for this type of work. Problem 1 is that it doesn’t use Tasker simplified pattern matching system. The first is the Name. Often this means variables that contain data you can’t split away because it’s different every time. For instance. Variable Section is an alternative to Variable Split. Store Result In lets you save the result to a different variable than you started with. and 52. As such the method to use a wildcard isn’t * any more. Finally.” Adapt to fit changes the previous option depending on the length of the variable. In theory. I find that it’s great for cutting off the beginning of variables that contain info they shouldn’t. In many cases. If you’re used to pattern matching for If conditions. like you wouldn’t be crazy to assume. which is simply the name of the variable you want to section. If you type a variable into the field.00004. it should replace Variable Split for a lot of tasks. Another great one to know how to use is Variable Section. just where it should start. for instance if you want to skip the first three letters in a variable. which is designed to pick a specific part of a variable and throw the rest out the virtual window. and one I have mixed feelings about.* (note the period). it uses actual regular expressions. but that would also split the minutes from the hours. You could then reassemble the time by doing a Set Variable %timesplitx to %timesplit1:%timesplit2. Knowing that it’s there and when to use it can be very handy. and timespit3. So. we end up with some garbage information at the beginning and end. one that is still a ways from turning into a beautiful swan.xml download and a zipped version. Because of this. you can go to this page in your browser.*” This would search for any mention of <h3><a href=”. and “read along” as I explain the bits. long click on the . This would return results (separate variables for each match) along the lines of this: “ <h3><a href=”http://www. meaning that it isn’t exactly infinitely superior to Variable Split. and then select to open with Tasker.com/2012/09/tv-show-favs-for-android-hits-version-3-0. If that doesn’t work. download the . I’ll go through this example referring directly to the downloadable task. which we’ve “fenced in” by placing a wildcard in the string between two pieces that border it. Since it was originally made as a download for people to use without understanding how it works. we split out the URL by splitting multiple times. and “ is needed to stop the wildcard from including absolutely everything following the URL. Bottom line. you’re left with three actions anyways. but due to the varying length of the URL. . As such. we need to either Variable Search Replace or Variable Split the “ to get rid of that. a direct .xml download. You could actually achieve the same by using Variable Search Replace and the following search string: “ <h3><a href=.but it still isn’t fixed. but I will give you a quick example of how it can replace Variable Split in some cases. followed by the non Tasker-standard wildcard (. Personally I use Variable Split more or less exclusively. In the Pocketables front page example above. Variable Search Replace is a bit of an ugly duckling in the Tasker toolbox right now.*). Two versions are available. On some devices.zip. Download the task from below.pocketables. We have to use <h3><a href=” here in order to catch the right URLs (not all the URLs in the code).html“ The wildcard is here the URL. because at least I know where I have it with regards to pattern matching syntax and variable support. ending with a “. I don’t want to spend too much time on it in this guide. That way. select “save link”. open it once downloaded. Example 1: Weather forecast Preperation This is the how-to version of the weather forecast task found in this article. The resulting steps are identical regardless of which of these methods you use. We can Variable Section from 1 length 13 to get rid of the beginning. and unzip it to the Tasker/tasks folder manually. you can download and import the task yourself. .xml Download: Weather. You can get such a key for free by signing up for Wunderground: http://www. I prefer doing HTTP Get into a local file and then read it into a variable using Read File rather than use the HTTP Get-generated variable %HTTPD.xml. Like I explained earlier. then the HTTP Get action. Task download Download: Weather. Switch out YYYYYYY in the Path field with your location.tsk. long click on the Tasks tab. and select a Text To Speech engine that you have installed.Go into Tasker.com/weather/api/ This will not work without you obtaining your own API key. State/City. By the end of action 2. This can be a US zip code. Then.tsk.zip Explanation Actions 1-2: The weather data is available online in XML format. which we can get our hands on using HTTP Get. Finally.wunderground. The resulting Path field should look something like this: “ api/123a123b123c/conditions/forecast/q/Norway/Hamar. and Norway/Hamar – with the slashes included. go into the Say action. CA/San_Francisco. click on the magnifying glass next to Engine:Voice. Open the task. the result is that you have a variable %Weather that contains everything in the XML file. Examples are 90210.xml The bold text indicates the pieces you replaced. Make sure there are no spaces or other “irregularities” when you insert the API. switch out XXXXXXXXX with a Wunderground API key. Select the Weather task. or Country/City. Random numbers or any of the examples used here won’t work in real life. select Import. leaving you with the child variables %Weather21 and %Weather31 that contain the weather forecast and nothing else. but not %Weather4 and so on.” It also uses Variable Split. try using CTRL + U (show source) on the page. I’ve marked the parts that aren’t in %Nforecast with red below to demonstrate this. and we don’t want to overwrite the existing child variables. Actions 6-10: Technically. Action 6 copies the contents of %Weather2 into a new variable. At this point. Actions 4-5: These are both Variable Split actions with ]]> as the splitter. %Weather4 and so on will also be created. you’re done getting the weather info after actions 4-5. Action 7 is a Variable Split for %Nforecast with <title> as the splitter. there’s only one <title> in %Nforecast. so I’ll explain how it works. If that happens. If you want more periods. That’s not all though. be it in a Say action to give you a spoken forecast or perhaps to send to a Minimalistic Text widget to display somewhere. Remember that %Weather2 (which %Nforecast is a copy of) is already a child. and use their %WeatherX1 children in the Say task at the end. or just look at this screenshot (click for larger image): As you can see. This is basically a fancy feature that isn’t strictly needed. %Weather1 is just garbage text. Since all the forecasts are “labeled” the same way. use the splitter <fcttext_metric><![CDATA[. Again. %Nforecast. These contain weather data for future periods. %Weather3.Action 3: This is the first Variable Split. simply add more Variable Split actions like these for more %WeatherX variables. This particular version of the task uses forecast information for two upcoming periods. These simply cut off the garbage from the end of those variables. which is why we’re cleaning up %Weather2 and %Weather3. so it looks for the splitter in an already limited part of the original document. just search for the first part of the splitter (up until >). one for %Weather2 and one for %Weather3. . This will make it use units like km/h instead of mph. the first forecast follows immediately after this splitter. You can see the logic of this by studying the screenshot above. You then have %Weather21 and %Weather31 which you can use however you like. while %Weather1 is all the garbage text before the splitter. The first splitter used here is <fcttext><![CDATA[. similar to how %Weather2 is for the coming period. This means that %Weather2 will contain the forecast plus a lot of garbage text. so we’re making a copy in order to avoid this issue. Note: If you want the metric version instead of the imperial version of the forecast. This splitter is chosen to get as close to the description of the weather as possible. but I added it originally to make the whole thing more “professional. Note that some browsers "organize" the tags in such a way that it won't be able to find this specific splitter using search. you should have the XML file open in a full browser (or text editor) in order to be able to see what’s in it. We’re going to split %Weather2 again using new splitters. even though there are many in the original source text. As such. If opening it in your browser brings up an RSS message. Actions 6-10 are however there to figure out if the second of the two upcoming forecasts is at night or in the morning. which you'll see if you search for it in the source text. Action 11: This is the Say action that actually gives us the spoken forecast. not just an information source.Point being. If it’s run later in the day. %Nextforecast lets us know which of those two are correct. you just have to know where to chop a source text up to get what you want. Action 8 deletes this </title> by splitting %Nforecast2. The method is basically the same no matter what you do. Action 9 creates a variable %Nextforecast and sets it to “tomorrow. The recipe is the same as I’ve already shown. You could just as easily have used it in a Variable Value context.” If it doesn’t contain that word. which has a lot of uses in situations where the variable in question isn’t just day/night. At the end of these five actions. where a forum member wanted to create a task that would fetch his local news and read it to him. %Nextforecast. changes the text to correctly specify when the second forecast period is for. you could easily skip actions 6-10. this split results in a %Nforecast2 that contains the title of the second forecast period as well as a garbage </title> at the end. while the last. The text is: “ Weather forecast for today is %Weather21. the weather forecast itself. the first forecast period will be for that day. This means that if the title of the second forecast period contains the word “night. we have a variable that is either “tomorrow” or “tonight” depending on whether the second forecast period is the coming night or the next morning. If the forecast task is run early in the day. It only loses you the ability for the Say to correctly specify when the second forecast period is for. It is however a good example because it uses data from the original XML source as an If condition. Of course this example also extracted actual information. This creates a %Nforecast21 which contains the title of the second forecast period. and the second the next morning.” Action 10 overwrites the variable created in action 9 with the text “tonight” IF %Nforecast21 matches *night*/*Night*. Like I said though. but since this is a task . Example 2: Local news fetcher This example originates from a help request in our forums. This Say text contains three variables. the first forecast period will be that night. and the second will be for that night. the value from action 9 (“tomorrow”) will stay. Two of them are the weather forecasts we got from the XML online.” the value of %Nextforecast will be “tonight. Weather forecast for %Nextforecast is %Weather31. which might not matter to some – and likely not if you’re using this in a widget. %lbnews2. as well as show a trick with using a Flash action as a “debug tool” when creating tasks like this. The website used as a source this time is this one. or transferred to a global variable and used elsewhere. but does have the advantage of not being used all over the place. I fired up screen capture software on both my phone and PC and recorded what I was doing. there are ways to automate this beyond manually copying the actions for each child. Splitting %lbnews2 using the splitter ” > puts the headline at the beginning of the variable %lbnews22. and simply replace the variables with %lbnews3 and %lbnews32. Since the initial split created multiple children that share the same format as %lbnews2. while narrating. The video is below. Download: Lpnews. It can be edited to change the number of headlines it splits out of the source if necessary. Each headline will then be in its own variable which can be used in a Say action or something else. just with a different article. and so on and so forth for as many of the headlines you need. %lbnews3 and so on. which contains the second headline – and nothing else. which is a Say. After splitting that first time we got variables %lbnews1. we can then copy the actions that split %lbnews2 and %lbnews22. Copying again and doing the same with the number 4 would give us the third headline in %lbnews421. which can then be used directly in actions within the same task.xml . respectively. Follow the instructions for downloading and importing in example 1 to get this into Tasker. has to be edited to specify a different voice engine if the Amy UK English Ivona engine I’m using for my text to speech is not installed. It should help visualize this entire article. with %lbnews2 and beyond containing the headlines – along with some garbage text. which doesn’t immediately precede the headlines we’re after. A final split of %lbnews22 using the splitter </a> leaves us with a variable %lbnews221 which contains only the headline.I had to create from scratch. Checking the source for a bit revealed that the best splitter to start with is <h2>.tsk. but for the sake of simplicity I won’t go into that. The final action. Task download: The downloads below contain the finished task with 5 complete headline variables. We then get %lbnews321. but still leaves a bit of junk at the end. Like I said earlier. com. Which of the basic versions you need depends on the date format you use.com. you want MM/DD/YYYY. in XML format.2012 as July 12th.12.tsk. If your email for Google does not end in @gmail. I’ll give you a task you can download and import. XXXX needs to be replaced with your Google user name. Four versions are available: A direct .com/privateYYYY/full?singleevents=true&futureevents=true&orderby=starttime&sortorder=ascending&max-results=1 calendar/feeds/example%40googlemail. Like with example 1. It has to use one of those two. you also have to change the bit after %40 with whatever domaing your email is. Follow the instructions in example 1 on how to download and import the task. “example” if your login email for Google is [email protected] download and a zipped version for each of the two basic task versions.zip Example 3: Google calendar event announcer Another explanation of a task I’ve given you a download for before. you will see XXXX and YYYY as part of the path: calendar/feeds/XXXX%40gmail.com/privateYYYY/full?singleevents=true&futureevents=true&orderby=starttime&sortorder=ascending&max-results=1 . and then I’ll go through and explain how it works.xml. This is a setting you pick in your device’s system settings. This time it fetches data from Google Calender using Google Calendar’s ability to access the calendar with a web link. e. In the Path field. This task only works with the date formats DD/MM/YYYY and MM/DD/YYYY. Preperation Download the task from the bottom of the article. open the task. or it won’t work. you want DD/MM/YYYY.com/privateYYYY/full?singleevents=true&futureevents=true&orderby=starttime&sortorder=ascending&max-results=1 These are the two pieces of information you have to switch out.g. in the date and time section. If you read it as December 7th. Once imported. Examples: calendar/feeds/example%40gmail.Download: Lpnews. If you read 07. then the HTTP Get action. DDMM and MMDD. tsk. although you can use the same method (with a different source URL that contains the right data) to make one that does. This task has been tested to work with the new format.com/private-1234567812345678/basic Your access key is the piece I highlighted in bold. “ Note: Recently created Google Calendar calendars use a different format with a randomkey@group. Task download Download (DDMM.tsk. You should get a popup box with a URL that looks something like this: https://www.tsk. click the orange XML button next to Private Address. . You need to copy this in place of YYYY in the Path field in Tasker.zip): CalendarDDMM.calendar.com/private1234567812345678/full?singleevents=true&futureevents=true&orderby=starttime&sortorder=ascending&maxresults=1 Save the edit to the HTTP Get action and then find the Say action at the end. then the calendar you want to use.tsk.xml.zip Download (MMDD. Actions 1-2: Reads the data into a variable.xml): CalendarMMDD. if you need that. like before.xml Download (MMDD.google. At the bottom of the calendar details screen. . . This means it won’t list multiple events.google. Select a speech engine that you have installed on your device. An example of a finished Path would be: calendar/feeds/example%40gmail.YYYY needs to be replaced with a private access key for your Google calendar.zip): CalendarMMDD. if that’s on the same day.xml. Action 4: . . We did this earlier too. Click the Calendars tab. To get this.com email in the URL.xml): CalendarDDMM. with another variable. then go into settings. Action 3: Copies the variable into another variable.com/calendar/feeds/example%40gmail. however you need to grab both the specialized email address and the key from the XML button mentioned above. since we’ll be splitting it multiple times.zip Explanation This task was made on demand for a very specific purpose: Reading the next upcoming event. start by going to the Google Calendar website.xml Download (DDMM. ” This is to make sure that the default value of this variable is “no. . the same as the device’s system settings – hence why there are multiple versions of the task download based on the date format used. Many people would prefer that it lists the next event no matter if it’s not on the same day. Instead we’re back to dealing with our original variable. %Calendar. and because we’re working more with it later on. a leftover value from the previous time the task ran will still be present if the If condition in action 9 isn’t met. This contains the start date and time of the event. Action 8: Creates a variable %Samedayevent and sets its value to “no. That way.” in case the If condition in action 9 isn’t met. Note that like I said. %Eventdate. This variable is a setting that we will use later to control whether or not the Say action mentions the next event. we’re able to compare the current date (%DATE) with the date of the next event. this task was originally created for someone who wanted this specific feature. the month in its own variable. which is the copy of the calendar source data. %Eventdate31%Eventdate2-%Eventdate1 takes the day. and now we’re going to work with the original. This is purely to clean up that last variable from action 6. Action 5: Copies the value of %Ceventdate2 into a new variable. We made a copy of this in the beginning.Does a variable split of %Ceventdate. Like earlier. we have a variable %Samedayevent that’s either “no” (if the If condition in 9 wasn’t met) or “yes” (if it was). and will make it clear what the previous bunch of actions were for. using startTime=’. %Eventdate contains data in the form of 2012-09-12T21:30:00. We’ve done something similar before. This one requires a bit of explanation. and the day of the month plus some garbage text at the end in its own variable. and without this. and don’t want any overwrites. Action 7: This splits %Eventdate3. we’re done with the actions that check to see if the event is on the same day. %DATE is Tasker’s built-in variable for the date. Action 9: Overwrites the value of the variable created in action 8 to “yes” If %DATE matches %Eventdate31-%Eventdate2%Eventdate1. which we then split out to eventually get the date of the event. removing the garbage. In this case I don’t think it would have mattered if we hadn’t copied it to begin with. which means that splitting by a dash puts the year in its own variable. this is because we’re going to use this variable multiple times. Action 10: With action 10.000+02:00. and year that we got from actions 6-7 and rearranges them to match the format that %DATE is in. It’s in a specific format. which is the third child from action 6 (the one with the day of the month plus garbage) using the splitter T. month. even though they’re originally in different formats! After action 9. we don’t cut off anything from the end of it right now. Action 6: This splits the recently created %Ceventdate2 copy %Eventdate using the splitter -. but it’s always good practice to do it to be sure. This splits it right up against the edge of the time information. It is however a great example of how you can process a mess of data into something that’s even in the same format that Tasker is used to. but it’s still there for us to use. Keeping a steady hand. Action 16: The final action. and sometimes you get them mixed up. It’s often the minor details that take time. a procedure we’ve used many times by now.000+02:00*garbage*.000+02:00 as well. it’s ok to use it this time because there will always only be one occurrence of that text before the one we want. The reason why we copied %Ceventdate2 to a new variable in action 5 was to be able to use it now. That just means that instead of using the %Calendar2 child. which now contains data in the format 21:30:00. basically). and of course the message is dynamic and has the title of the event (%Calendar31 from actions 10-11) and the time (%Ceventdate22 from actions 12-13).” These are frankly redundant as we could have put actions 8-9 here and have them do it directly. because of the use of different messages for different situations (event/no event). so its value starts with data in the format 2012-0912T21:30:00. in other words. Action 13: A real world example of Variable Section! Sections %Ceventdate22. It is however better to be safe than sorry. not the date. it saves us from having to reassemble the time like we would have had to do had we split it with a colon (as the colon is used in the time. which can be “yes” or “no. I believe we could have used %Eventdate32 directly instead of starting from this far back with %Ceventdate2. Action 14-15: These two actions set the variable %Nextevent to either “Your first appointment today is %Calendar31 at %Ceventdate22″ or “You have no appointments scheduled for today”. Simply tells us the value of %Nextevent. Keeping track of all these child variables is a pain. Action 12: Splits the variable %Ceventdate2 with the splitter T. action 10 does a Variable Split of %Calendar with the splitter <title type=’text’>. This time we’re after the time. This is where the original example of Variable Section above comes from. This is the text that immediately precedes the title of the event. it would have been a matter of splitting out the event title. and the minutes – the time.Anyways. and complicated. We haven’t used the %Ceventdate “family” for a few actions now. depending on the value of %Samedayevent. and even though it’s not unique (it’s used once earlier in the source text). to only be 5 characters long. as this example proves. we use %Calendar3. %Ceventdate2 is identical to the original %Eventdate. which is fairly simple (actions 10-12. Action 11: Does a Variable Split of %Calendar3 with the splitter </title>. but again it has to do with this task being put together a bit too quickly. That means we get the hours. and like I mentioned then. Without that feature. the infamous Say which actually turns 15 actions worth of work into a spoken message. so we’re starting over. This is just for cleaning up the garbage text at the end of %Calendar3. but the original task was made in somewhat of a hurry. and sometimes that extra hassle isn’t worth it for some people. which was set in the two previous actions. too). and I don’t want to change the task in this example compare to the original article where it was a download only. In conclusion Being able to process data in variable using Tasker opens up for a lot of possibilities. the colon. The result is that it has a different message for a day without appointments. This task is long. but there’s also a lot to keep track of when you’re splitting variables left and right. having the source text open for . I could easily make it give me hours and minutes. and debugging using a Flash action (see example 2) are essential for getting through this without going crazy in the process. days. Examples are the Calendar Insert action. or months. Luckily though. like finding out how much time has passed since two dates weeks from one another by using simple subtraction. When that one is activated. When it’s deactivated. to convert times and dates into this format. Actual measurements for time. Calendar dates.5 hours. Tasker has a built in system that makes that statement make sense. That creates something of a problem when a lot of Tasker actions/creations require you to find out when something occurs in terms of time from or until now. such as minutes. In the next part of the guide I’ll cover some tips and tricks of using Tasker. weeks. on the other hand. After all. it writes %TIMES to a user-created variable. 1970. There are 60 seconds in a minute. is another matter. meaning that it gives me 8. by dividing by 60. hours. like example 2 in this article did. and so on. so if you have a profile or task you just can’t figure out how to make. by using its own chronology that started in January. The built-in variable %TIMES gives you the current date/time in seconds. This number can then be accessed in two ways. but I understand either format just fine. things that didn’t really feel natural including in any of the previous parts but still deserve to be mentioned. similar to how %TIME and %DATE does it for actual time/date. To take a concrete example. which you can convert to minutes. %smactivation. which requires you to input the date and time in minutes from now. or my sleep mode profile. The solution is to use the smallest measurement of time we use normally: Seconds. weeks. As such. let me know and it might make it into an article as an example. I mentioned my sleep mode profile. requires that all time is converted to seconds. of course. it does a simple (%TIMES-%smactivation)/3600. or between two points in time. Beginner’s guide to Tasker. All dates since then can then be expressed as a (large) number of seconds elapses since then. Referring to all time as seconds allows you to apply normal math to time. which tells me the time I slept. and so on to move through the formats. then 24. days. as hours and minutes don’t exactly work that well with withnormal math. converting seconds into hours. The result will be in seconds. Later on in the series I’ll do parts dedicated to examples of all sorts. This. Note that the result doesn’t convert decimals into minutes. so 1000 seconds is 1000/60 minutes. can easily be converted with multiplication or division. You can also use the Variable Convert action.reference. then 60 again. part 5: Tips & tricks Time in seconds Dealing with time can be annoying. which I’ll talk more about below. etc. You then have the tools needed to apply math to time. hours. “how many seconds is today’s date” makes no sense in a traditional conversation. not 8 hours 30 minutes. . %smduration is the total time (in hours) that the profile was active. Dividing by 3600 is the same as dividing by 60 and then 60 again. giving me %smduration. in which case the time is assumed to be 00. You have everyday things like feet to metres. Date Time to Seconds is the conversion function you have to use to convert into time in seconds. Variable Section Name: %date From 1. Variable Section Name: %date From 3. The Tasker user guide.MM. given of course that it supports that particular conversion type. As an example. It’s important to remember that you have the tools to do practically anything to the value of a variable. math. and the conversion I talked about above: Time in seconds. Length 2 Store result in %mm 3. more specialized things like hex to decimal. Length 4 Store result in %yyyy 4. Variable Section Name: %date From 5.00. Variable Section. for instance if you pull data from a calendar online or similar source. The latter is perhaps the most important conversion available in Variable Convert. Length 2 Store result in %dd 2. A pretty simple way to do that would then be: 1.Variable Convert Variable Convert is an action everyone should be aware of. and so the order of a date isn’t an impossible task. with perhaps the most straight forward being YYYYMMDD HH. Variable Set %newdate to %yyyy%mm%dd %newdate can then be used in Variable Convert. has an overview of what format the time and date has to be in to be compatible with Variable Convert. The date can be in there on its own. even if it’s today. available through that question mark in the bottom corner of the Variable Convert configuration screen. Sometimes you’ll find yourself with a date that’s in another format than what Variable Convert wants. let’s say that you have a %date in the format DDMMYYYY and want it to be in the format YYYYMMDD. It is however also important to remember to check what input . and in some cases. It can convert the contents of a variable into another format. but converting just time requires you to specify a date. Note that some of Variable Convert’s accepted formats depend on the date format setting in your system settings. This is where your skills in using Variable Split. and it even has four different conversion functions associated with it. comes in. Medium Date Time. By first doing a variable randomize. and Long Date Time options. The image below shows the difference between the Date Time. the Read Line option allows you to read a line from a text file. and then using the created variable in the Line field. Read File: File: dinner. You could for instance make a task where you input a number of days from today. it’s all about using Variable Randomize to give you that random number. Simply put.an action like Variable Converts accept. Looking at the options. and running the resulting variable through Variable Convert. where the task looks like this: 1. Sounds simple enough. and the key is to use these two features together. Time in seconds to date time The other three time/date related functions deal with converting back to a human readable format.txt To Var: %dinnertext . The only difference between them is how much information the resulting variable contains. or random line in a text file? Well. The Min and Max fields in the Variable Randomize action itself can be replaced with variables. down to reading different files by giving the files names with numbers. A very typical use for this would be to return a human readable date after you’ve done some calculations with time in seconds. which means that you can control the range of the randomize action remotely. and the calculations turn that into seconds) to %TIMES. Many settings for other actions in Tasker allow you to use variables as the setting instead of a static value. you end up reading a random line! This can be used in so many places. but how on Earth do you use that to for instance read a random file. Variable Randomize Variable Randomize is the alpha and omega for making any part of Tasker random. and Max. It doesn’t stop there though. it gives the Name variable a value between Min and Max. and not just input anything thinking that it’s capable of ectracting the same information from something as you can. Min. you’ll see some fairly simple options for Name. but it’s not the most intuitive action out there. For instance. and then use that number elsewhere. It would be as simple as adding X*24*60*60 (where X is the number of days. An example of this in practice can be found in my random dinner picker. and then it returns what date that corresponds to. That line is specified by the option Line in the Read Line action. as the task will count the number of entries itself. | has been intentionally added at the end of each line in the text file with the specific purpose of acting as a splitter. Splitting by it therefore gives us one variable for each line in the text file. Notification action. This saves you from having to change the Max field in Variable Randomize every time the number of lines in the text file changes. This variable can then be used in a Say action. Variable Set: Name: %Dinnersuggestion To: %dinnertext(%dinnerno) The task starts out by reading the content of a text file. Action 3 sets %dinnerrandom to %dinnertext(#). Variable Split: Name: %dinnertext Splitter: | 3.2. If the text file contains 5 lines. and transfers that into a global variable. . %dinnertext2 etc). By adding (#) to the end of a base variable (aka an array) with lots of children (%dinnertext1. since the range is determined by first reading the text file! Action 5 uses this randomly generated number to pick the corresponding child variable. In other words. a range equal to the number of lines in the original text file. etc. By doing it this way. by counting how many variables were created when splitting. and pick a random number from that range. You don’t need to update the task for every time you update the text file. Action 4 does a Variable Randomize from 1 to %dinnerrandom. and %dinnertext(#) will be 5. This is a quick and dirty way of counting how many lines there are in the file. This gives us a random number that is guaranteed to be within the right range for the text file. Variable Randomize: Name: %dinnerno Min: 1 Max: %dinnerrandom 5. even if the text file has been externally edited. Variable Set: Name: %dinnerrandom To: %dinnertext(#) 4. you get variables %dinnertext1-5. you’re actually asking Tasker to insert the number of child variables in place of the variable. and splitting it by |. the task is completely independent of text file changes. Do Maths Both If conditions and variable manipulation allows for applying math to the situation. Counting things Something as simple as counting something has a lot of uses in Tasker. you can actually make that compatible with Variable Convert by dividing by 100. If you have a time in the format HHMM. as they don’t have to be the same. you have a system that adds to a variable every time something happens. It adds a specified numerical value to a variable every time the action is run. If you don’t know when to put something in parenthesis in math. You can for instance count incoming SMS. If you tie this to a Event context. I mentioned a few uses for this above. or a file. you can count pretty much anything that happens on your phone. it’s important to remember to reset the variable. will result in 9. but you have to be careful when doing so. Says). the number of hours you’ve been at work. which is a decimal number from a math perspective. I can add a profile that counts how many SMS I’ve received by adding 1 to a variable every time I receive an SMS. The bad news is that you still need to know math to be able to do this. essentially making the variable a counter. like Received Text. but on the other hand. Test here refers to testing the value of something. Math can in some cases also be used as a replacement for Variable Split/Variable Section. There’s a long list of test types you can choose from. or to control/trigger actions and contexts. Never confuse such a counter with an app’s internal counter. Variable Add is a very useful tool in these cases.3 means in terms of time. and emails into a single new events counter. You can run after it with If conditions for variable length and throw zeros at the end after the fact. This gives you 14. Using Tasker like this isn’t as accurate as reading an app’s internal counter. which then assumes that I opened the app to read the messages. static data.3. To reset the Tasker counter. widgets. but the Tasker counter won’t. but it quickly escalates into dozens of actions to cover all possibilities. slept. like 1435. I could for instance create a profile that sets the counter variable to 0 whenever the SMS app is opened. at least not if you keep up to date with reading all messages. You can also combine different counters. If I then go into the SMS app and read SMS. the SMS app’s internal unread counter will reset. like combining missed calls. Tasker won’t understand what you’re trying to do either. and then use normal mathematical rules. SMS. ranging from the length of a variable to the modification date for a file. with converting different measurements for time. like a variable. which in many cases can be a bigger challenge than anything else in Tasker. emails. You can use this information in feedback to the user (notifications. The good news is that the approach is pretty straight forward: Use Tasker variables with numerical values in place of actual numbers (much like you use unknowns in math). but a time with a period as the separator between hours and minutes from a Variable Convert perspective. like 0930. For instance. The reason why I say you have to be careful is that doing the same thing to a time with a zero at the beginning or end. as you don’t store unnecessary zeros when doing math. Test The Test action is semi-hidden away in the Misc category.35. If I leave the app without reading all the messages however. When doing this. the counter will be off the mark again. Variable Convert won’t understand what 9. as well as when to do it. or driven in your car. . Normally this isn’t a big problem. based on voice input containing “goodnight” and “good morning. just like Variable Convert. by using the Perform Task action to run other tasks as part of a task. Speaking of editing actions. however. which can have uses in for instance Variable Section. but often comes at the expense of actual functionality. By complicated. I wouldn’t have been able to also control it using Nelly. It might clutter up your Tasker a bit. You can for instance have a single WiFi Connected context react to multiple different networks by using a slash in the configuration fields. I have several rather complicated single actions in my Tasker. including when the device boots. It seems to come from wanting to keep Tasker organized and running smoothly. which Tasker can read using a power state context. This counts the number of characters in a variable. My Tasker based voice assistant. Profiles tie contexts together with tasks. which the other tasks can then call on using a single action. Despite this.” If the main profile had been tied to AC charging directly. but you might . I mean that there are many fields that are filled in. and this is exactly that. %Sleepmode. and when one of the values (of which there are several) used in the widget changes. as there frankly is no reason to. tied to the same task.I don’t find myself using this action a lot. Tasks can also be split into pieces. This means that plugging in the charge makes one profile set a variable. and perhaps even an If condition that adds even more. So. I’ve mentioned the advantages of turning contexts into variables before. Instead of inserting the same actions in all the different tasks. I should also remind everyone that adding multiple contexts to a profile makes the relationship between them AND. often with a lot of information. they’re all located in a separate task. Updating the widget is something I need to do in multiple situations. and the same task can be used by multiple profiles. the profile isn’t triggered by that context. which in turn is set by a separate profile with the power state context. why use twice as many profiles as what’s seemingly necessary? The answer is simple: To make the main profile controllable with different methods. There is no way to make this relationship OR. If you want a profile to be active both when connected to a WiFi network called Home and one called Work. it’s normally the Variable Length test type I use. like SSID. and still only have to edit one task. not either one or the other. Nelly. but practically speaking. The Test action is one of those actions you should know of and be familiar with so that you know to look there if you ever need one of its tools. you put Home/Work into the SSID field. This both helps keeps things organized and makes it possible to share action groups between tasks. also has the ability to set %Sleepmode. An example is my widget update task. You can therefore have two separate profiles. it makes no difference. It contains actions that together pull in the necessary information and use it to update my Make Your Clock Widget widget. each with different contexts. All the contexts have to be met. 98% of the time I trigger it by plugging in my charger. I’ll use my sleep mode profile as an example once again. If you need the same action in multiple places you can of course copy and paste it. Don’t confuse the lack of an OR relationship between different contexts with the relationship between several possible configurations of the same context. It saves you time both with initial setup and when you need to edit the actions. not OR. and when I do. which in turn enables another profile. It’s triggered by a variable context. Don’t be afraid to use multiple task and profiles to accomplish something One thing that has surprised me from watching help requests for Tasker is how a lot of people feel a need to cram as much functionality into as few tasks and profiles as possible. the Notification event is great.00 actually lasts until the time is no longer 10. allowing you to use it in Tasker. but . I personally use it to customize Gmail email notifications based on location (visual at home. you would perhaps assume that the first one would become inactive at the same time the second becomes active.59. which is stored in the notification description). but unfortunately not the description. and neither really contain the info one would likely need (such as message subject. you only have to edit those complicated actions in one place to have the changes apply to everywhere it’s used. There’s no State equivalent for ongoing notifications. which would be useful for long app installs. or perhaps you want your meeting profile to deactivate a few minutes after the calendar event context is over. A calendar event lasting until 10.00. You can filter by what app sent the notification and the title of the notification. The notification title will also be stored in the built-in variable %NTITLE.00. the usefulness of the notification title depends on the app and OS version. The event will then stop being active at 9. That way. but forget about filtering them based on subject (K-9 mail is however an alternative email app that has the needed Tasker integration). That still leaves a lot of apps and services that Tasker doesn’t have direct access to. unless you can edit it in just one place. Even with these restrictions. This means you can create profiles that act on notifications from Gmail.00. giving you time to exit before sounds start coming. From 10.01.00. assuming Tasker has accessibility access (a setting in the main system settings).00 and 10. file uploads. just something that’s used in enough places to make any edits a pain. say from 9. The Gingerbread Gmail app creates a different notification title than the ICS Gmail app.00. and using Perform Task to refer to them.59. and other processes that use ongoing notifications while active. and the second event will become active at 10.59. The usefulness of the title field depends on the app. syncs.00-10. allowing Tasker to react to notifications created by other apps. there’s no Even action for when a notification disappears. which causes the collision. Heck. Furthermore. strong vibrations outside). Tasker is only able to see the notification when it appears. A typical example would be if you have a WiFi Connected profile that you don’t want to deactivate if you move out of range for a few seconds. If you have two calendar events that are back to back. To avoid this.00. on top of whatever Tasker can get from the system. back-to-back events have to be set up so that one event ends a minute before the other begins. which is at 10. and even the OS version.0011. it doesn’t even have to be a complicated action. Blame Android. Similarly. Like I said. Back-to-back calendar events can overlap in Tasker The ability to have profiles be active when calendar events are is great. but there’s a “trap” with that system that is very easy to be caught in. Notification contexts There are a few handfuls of apps that are integrated with Tasker.59.also consider giving those actions their own separate tasks. The Notification event context can often help in such situations.00. in this case 9. That’s not the case. Delaying a profile’s activation/deactivation Sometimes you may not want your profile to activate or deactivate the very moment the context is met.00 to 10. both the above events are active. and you can imagine similar uses with other apps. Delaying a task is simple with the Wait action. so with AutoRemote there to allow it to communicate that data to other devices. act on them. Let’s assume you want to create a profile that is active when connected to a WiFi network. The Exit task first does a Wait for 5 minutes. by a variable set by another profile. not the back end. IM. it will fetch your personal URL. That way you can use the standard Wait action to actually delay the deactivation of the main profile by 5 minutes. but you want to make it so that the profile doesn’t deactivate until the device has been disconnected for 5 minutes without having reconnected in the mean while. What this does is to make your original profile triggered indirectly. and for accessing AutoRemote’s web access. and send them. Once installed and opened. part 6: AutoRemote What is AutoRemote? Mobile devices can communicate with one another. the enter task’s Stop action will stop the exit task. with both an enter task and a named exit task. but in ways designed with the user in mind. While AutoRemote has grown beyond its original dependency on Tasker in some areas. You then create your original profile and use the Variable Value state context for %Wifiactive equals 1. If the device reconnects in those 5 minutes. To do this. feel free to do so in the comments below. Tasker already has the ability to collect practically any data. and without bothering the user. you want to make the actual trigger for the profile its own profile. Ever wish your phone could notify you of your tablet battery running low after days of being idle? AutoRemote gives the two the channel needed to communicate that kind of information. Opening the URL in a browser will present you .gl/RandomCharacters. instantaneous. After all. without the user having to be part of it. as well as a Stop action with the exit task’s name. email. SMS. Beginner’s guide to Tasker. AutoRemote on the other hand is a communication system designed for the devices to communicate. it’s still very much a Tasker plug-in. something has to manage the messages. which is important to avoid the Exit task completing and disabling the other profile despite the reconnection. not do so entirely on its own. If you have any to add. you have what you need to create setups that make iOS devices look like they’re from the last century. and then a Set Variable %Wifiactive to 0. and these are just the ones that came to mind. The enter task does a Set Variable %Wifiactive to 1. That other profile contains the original context. It allows messages to be sent between devices that have been registered as a group. In conclusion There are probably hundreds of tips and tricks that help with using Tasker. It does. however.dealing with profiles like this is a bit trickier – but not much. This URL is both used for registering your device with other devices. and so on are all services designed for the user. video chat. which will be in the format http://goo. but it’s that profile’s tasks that control the other profile. Getting started with AutoRemote AutoRemote can be had from Google Play for $1. Specifying a target in the context and the message allows you to control which messages trigger the context without matching the message itself. Default is %armessage Comm Params Prefix: Part of a system to allow you to send more advanced commands using AutoRemote. this can be used like this: “ You can use AutoRemote with other Tasker conditions. The basic syntax for this is parameters=:=command. To use an example from AutoRemote’s Google Play description (also example 6 below). Then. select Share. Try going into Google Play. as that actually creates a blank message filter that will make it react to all messages. Tasker context AutoRemote adds both contexts and actions to Tasker. AutoRemote’s Tasker-independent features will be ready to go. Case Insensitive: If checked. It’s a partial match system. so if you use this to change settings that Tasker normally revert automatically – like screen brightness – you need to uncheck “restore settings” in the profile options. you can access the menu to get into the list of registered devices. Here you can register a new device by using the personal URL of that device. just one that turns on and off quickly. This one allows you to specify text that should be part of the message for it to trigger the context. Once this is done. This will open the same page on the other device. under Plugins. You’ll have to do this on both devices in order for both of them to be able to send messages to the other.” Clear Message Filter: Clears the message filter. Matching Options Message Filter: The main method for filtering messages. and then remote open URL. go into an app page. you’ll want it to behave as an event in many situations. Create a “shop=:=” command and combine it with a 5PM condition. as well as instructions for accessing AutoRemote’s second personal code. Back in the app. so “message” will match “this is a message. It’s available in Tasker’s State context category. but as you can imagine. which isn’t the same as simply making the message filter blank. Any devices registered in this list will be available as an option when you go to send a message.with a page where you can send messages to your device. Plugin Options Event Behaviour: The AutoRemote context is a state by default. which is used for some parts of the AutoRemote eco system. the message filter will be case insensitive Exact Message: Makes the message filter require an exact match. Note that Tasker still thinks the context is a state. whereas the default is a partial match system as mentioned above. at . the key. There’s quite a few settings available in the configuration screen. and this way connect devices together. so let’s go through them all. such as the Date and Time conditions. share your personal AutoRemote URL with your wife and have her send stuff she needs you to buy like “shop=:=carrots and ice cream”. so let’s start with the context. Then. showing you that it’s set up correctly. Checking off this box does that. Use Regex: Allows you to ruse regular expressions in the message filter Tasker Vars Message: The name of the variable you want the message to be transferred into. Target: One of the methods for filtering messages. Like the context. Also. If this option is used. This system will be easier to understand with the examples further down. The available options are: . The same happens with channels. Send Message: Allows you to test send the message Tasker action 2: AutoRemote Channels The second available action is for managing channels. and the message action allows you to send messages. so there are several such messages queued up. Main settings: For accessing AutoRemote’s general settings. Tasker action 1: AutoRemote Message The AutoRemote context helps you trigger profiles based on incoming messages. Target: Corresponds to the Target option in the context Password: If AutoRemote has been password protected in the main app on the receiving device. Command: Controls the name of the command variable created from using the =:= system.5PM your phone could say that list out loud: “You need to go shopping! You need to buy carrots and ice cream” There can also be multiple parameters in a single message. When you enter a chatroom. but your phone has been off. when you exit a chatroom. or. Don’t confuse this with the Channel option under Device – this one allows you to send a message to a specific device and at the same time enable a channel. An example would be if your tablet lets your phone know what it’s doing. Advanced settings Time To Live: The amount of time the system will try to deliver the message before it gives up Message Group: Allows you to make the message part of a message group. alternatively. you stop receiving messages from it. The description below from the AutoRemote developer might help understand channels better: “ To better understand what a channel is. This settings controls the name of the parameter variable(s). separated by a space before the command separator =:=. Device Type: Selected automatically based on the setting above Message: The message you want to send Channel: Channels are connection groups that multiple devices can join to be part of the same network. whereas sending a message to a channel sends a message to that channel. imagine channels as chatrooms. You can then specify how to handle multiple messages from the same message group. This allows that device to simply reply to a channel instead of having to specify a device. you start receiving all messages in that chatroom. and the default is arpar. basically categorizing the message. it has a few options as well. a channel (see below) or the last sender. you need to specify the password here for the message to get through. and you only want the last. a channel connection will be made with the receiving device. Device: Select which device to send the message to. URLs can be opened in a browser when received. similar to profiles in Tasker. The options available here are identical to the other places you can send AutoRemote messages. On its own.Name: Name of the channel to manage Device: All devices by default. One is for registering EventGhost. The way it works is similar. so I won’t go into detail. There’s an example further down which shows a very basic setup with EventGhost. the program is very similar to AutoRemote on Android. and will then make EventGhost an available device on your Android device. and on top of that. . This enables you to run commands upon receipt of certain messages. you can create rules for incoming messages. Clear chosen device: Clears the above setting Enter of Exit: Makes the specified device enter or exit the specified channel Exit all: Makes the specified device exit all channels Apply now: Let’s you apply the settings right away instead of running the action. The other action is for sending a message. there will be a couple of new actions available in EvenGhost. AutoRemote EventGhost plugin The Windows program also has a tab which allows you to install and manage an EventGhost plugin. With the EventGhost plugin installed. and receive messages. but still different enough that you basically have to learn an entirely new Tasker-like program to be able to use it properly. send messages. AutoRemote for Windows There’s a program available for Windows computers that expands the AutoRemote network there. the changes apply only to a specific device. It should be run on EventGhost startup. for instance by tying it to programs like nircmd. You can add devices. If specified. EventGhost can best be described as Tasker for Windows. Note that EventGhost has to be registered to the device you want to send messages to. which basically means that the action lets your AutoRemote network know that it’s there.exe to use it to turn off your PC at night (which is what I do). a program that automates you computer in much the same way Tasker does your Android device. but I can’t start going into EventGhost in detail here – especially since I haven’t used the program much myself. ” which would give you a vocal message for when the tablet is in use. . Then. Like I said. add a AutoRemote Message action. The simplest way to get this is to set up the message you want to send from your device. but it is). EventGhost is different enough from Tasker to be alien to new users. You will now have a global variable which will be either “active” or “inactive” based on the status of the tablet. add an exit task. which you can use to send URLs or entire parts of a web page. Example 1: One device letting another know what it’s doing When I talked about how Android has ruined iOS for me. That was a reference to a very real possibility on Android. Option 1: When the tablet is in use at all Create a new profile in Tasker on the tablet.” For the task. create a new profile. The extension adds an option to send text to one of your devices when right clicking in Chrome. use the Display State option under State -> Display. where I open a URL on my phone by right clicking in my PC browser. This will make the event appear in EventGhost’s log. and set message filter to “tabletstatus. As the context. which uses Tasker and AutoRemote. enable event behavior. set it to send to EventGhost. AutoRemote Chrome extension AutoRemote also has a Google Chrome extension available. allowing you to drag it into a macro. You could also add a Say action to the AutoRemote-triggered profile and make it say for instance “Tablet is now %arpar2. If you have a email notification profile. I mentioned that I’m expecting my phone to know that I’m on my iPad. Select AutoRemote. As the enter task. and I won’t turn this into a EventGhost guide. You can now do what you want with that. and configure a similar message with “tabletstatus inactive=:=. It’s relatively new. but the beta made a cameo in the video to example 2 in part 4 of this guide.” On the other device. This makes the profile active when the tablet’s screen is on. and in turn let it notify me of emails instead of my phone.To actually trigger an EventGhost macro (similar to Tasker profile). This latter example is shown in the video below (it might not be obvious that it’s the phone that speaks. Configure it for the screen being on. Here’s how that would work. and then send it. Configure it to send the message “tabletstatus active=:=” to the phone. you can for instance add a Variable Value %Tabletstatus matches inactive to it to make it stop triggering if you’re using your tablet. add a Set Variable %Tabletstatus to %arpar2. you need the event that a message creates. which puts parameters before the =:= and commands after. app) that is currently being displayed. If you make a profile with the event profile Variable Set %WIN and tie it to an task with Flash %WIN as the action. the Display State On context becomes active. Part 5 of this guide covered how to set up profile delays properly.” we’re activating AutoRemotes command system. By using messages in the format “tabletstatus (in)active=:=. which is the name of the window (i. When the tablet turns on. and simply lets us filter this particular message for use in the context on the phone. and we want it to contain information about the state of the tablet. which is here “active/inactive. or anything like that. When the screen turns off.” based on the state of the tablet. however.” We can then transfer this “setting” to a global variable on the phone and use it elsewhere in Tasker. runs the enter tasks. but we do need two parameters. we want to send a message from the tablet that is unique to the screen on/off scenario. and the exit tasks sends a message saying it’s inactive. a system that should probably be implemented in a setup like this. In reality it’s such a very simply profile. which then sends a message to the phone that the tablet is active. We don’t need commands here. This variable is %WIN. The second parameter is “active/inactive.e. If you want your phone to know when your tablet is connected to a specific WiFi network. then all you really need to do is switch out the Display State context on the tablet with whatever context fits. . and is updated as the window name changes.So what exactly is going on with all the =:= and %arpar2 and whatnot? Well. but in practice. Tasker has a built in variable for the so-called window label. it gives one device the ability to act on the state of the other. The first (tabletstatus) is static. it’s a bit more complicated – but not much. If you want it to be aware of when a specific app is being used. Note that such a profile can become a nuisance if it’s constantly going off when you’re for instance just trying to check the time on your tablet. you can move around your device and see the window name displayed as a flash message as you move between apps. By enabling the command system with =:=. %arpar2 is the second parameter. depending on what exactly you want it to be aware of. Option 2: When a specific app or feature is being used Making the phone aware of when the tablet is in use is great. has headphones plugged in. the profile deactivates. but what if you only want it to be aware of when specific apps or features are in use? The concept is practically the same as above. or we can simply use the local variable %arpar2 in the same profile (which is the case with the Say example). AutoRemote splits the message into (by default) %arpar and %arcomm variables. all thorough the notification itself. and add a device to the list of devices. Configure it with a name. The %arpar2 variable will then be the active window. select Add Event. I can either view them on my phone or my PC. an AutoRemote message to my PC for gmail. which means that simply holding down on the Gmail logo when it pops up opens Gmail on the PC. An example would be to set the phone on silent if you’re using an ebook app on the tablet. If you need your phone to know when your tablet is using Netflix. you can make the tablet send the name of the active window to the phone. It’s a good idea to filter this somewhat before sending the message. rather than filtering it on the phone end. and enter “notification” as the channel. Find the Register EventGhost action under AutoRemote. Give it any name. to avoid it spamming the system. it displays a Gmail logo on the screen when an email comes in.Message. Right click the macro. That message automatically opens in the browser on the PC. By using the Variable Set %WIN context in place of the Display State context in the setup above. right click it again. and then Show OSD under EventGhost. Click OK. but one I use a lot. select Add Action. Add Plugin. Not right click the Autostart tree in the list and select Add Action. This can then be clicked to open the Gmail app on the phone. switching out “active” with %WIN” in the enter task. Next. it just sends an AutoRemote message instead. Enter “Message from phone: {eg. . This is a very simple system. and find AutoRemote under Other.payload. Since I posted that part though I added a long tap feature to the logo. If certain contexts are met (such as being at home). which you can use as a trigger for various things. then restart EventGhost.arcomm}” into the “text to display” box.com. Point is. and enter “AutoRemote. Finally. and deleting the exit task (since it becomes an event profile). It uses AutoRemote and EventGhost to create a system where notifications are forwarded to the computer when it’s on. First you need to go into EventGhost. Select the device you added. Note that this particular method would send every single %WIN change to the phone. Select Configuration. you can set it to only send the message if %WIN matches Netflix. like Netflix’ window name being Netflix or Gmail’s window name being Gmail.giving you an idea of how this works and what names are used for apps. add a macro.osd” in the field. Example 3: Forward notifications to a PC when it’s on This example is based on a setup that the AutoRemote developer himself uses. The task is almost identical to the tap task for opening the phone’s Gmail app (so see the original example for that). Example 2: Gmail notification that opens up Gmail on the PC Example 4 in part 3 of this guide showed how my Gmail notification system works. It’s normally pretty straight forward. and make sure it’s nested under Autostart. When emails come in while I’m at home. there’s a variable that basically tells you what’s being displayed on the screen. Save the EventGhost configuration.event. Add a new macro. but with a PC as the device we’re checking in on. and then drag and drop the event you want from the log and into the macro. This means that when a message starting with “osd” is received. create your profile. you should probably read an EventGhost tutorial – which I won’t be writing. Example 4. and dropping events and actions into macros tie them together like contexts and tasks in Tasker. go into AutoRemote. For my Skype example. In the message field. and check that it’s set to drop PCs that can’t be reach from channels automatically (that should be the default setting anyways). Next. Don’t add any filters to the configuration.Skype. If you want to send your device a message when you’re using Skype.Now go to Tasker on your device. you know the drill by now. Use AutoRemote as the context. we have a event for an incoming message containing “osd” and an action to display an OSD (On Screen Display) that contains EventGhost’s version of the %arcomm variable from Tasker. because I don’t know EventGhost very well myself.” Save out of Tasker. and by running it on startup.1: Turn you phone into an automatic control pad for specific computer programs . not what you do with it in Tasker. then enter “notification” in the channel field further down. That’s it. trigger a silent profile based on that variable. So.Skype” events are the ones you want. EventGhost uses different methods for events and actions. and reset the variable using a message for when the computer program closes. the title of notifications on the phone will appear as a message on the PC. When the computer is on. You’d then make AutoRemote set a variable based on a message from EventGhost. right click the macro.” Now. and select to add an action. the log will show the event “Task. what’s going on here? The Register EventGhost action in EventGhost lets the device know it’s active. Assuming you’ve not messed too much with the default setup of EventGhost. that happens when the computer turns on (assuming EventGhost is set to autostart). because we’re not just in Tasker anymore. because it’s a list you can drag and drop events from! If you for instance switch to Skype. In this case. A possible use for this can for instance be if you play online games and want the phone to for instance be quiet or use louder notifications when you’re doing that.Skype” and “Task. in Tasker. as an example. This is a great feature.” Assuming you did the steps in example 3 to activate the plugin and register EventGhost on startup. and select the Notification context under Event -> UI. To really get the most out of making these two work together. Select to send to channel as the device.Activated. Make the task whatever you want to do – the point of this example is the EventGhost/AUtoRemote end. create a new one. it displays the command variable (the notification title in this case) on the screen. Again you might get a use for the delay system from the previous guide in order to avoid having quick window switching trigger profile changes. then find Send Message under AutoRemote. it’s now very simple to use these events. As the connected task. give it a name. Create a new profile. Macros as the profiles of EventGhost. It’s easy to get confused here. enter “osd=:=%NTITLE. and filter the message by whatever you made the message “skypeon” in my case. Send whatever message you want to send. Example 4: PC letting an Android device know what it’s doing This example is similar to example 1. the log on the side should show what happens on the computer from EventGhost’s point of view.Activated.Deactivated. and add AutoRemote Message as the action. the “Task. I simply made the message “skypeon. with variables in a completely different format. ” Next. When you have the Chrome extension installed. As per the AutoRemote dev’s suggestion. and then add a second context for the time the person leaves work (the time you want the message to play) in the same profile. which is much easier than needing special software. and whatever other tools you need as buttons in the scene. make a new rule. Both EventGhost and NirCmd allows you to send keypresses to the system. add the AutoRemote context. but I thought I would include it. you can create custom interfaces with buttons that send AutoRemote messages to your computer. By using methods from previous articles you can store any new list items in an actual list. it’s time based. and find the Set Clipboard action under Misc. and both of those can be used via AutoRemote (NirCmd directly from the AutoRemote Windows program). Make a new profile in Tasker.” Add a task with a Say action with “You need to go shopping! You need to buy %arcomm” as the text.” and the command to “copy. Such a scenario is actually quite easy to set up. You can follow any Tasker coverage by using this link or this RSS feed. More parts will come eventually. and so on. I set it up so that I can copy text from Chrome on my computer directly into the clipboard on my phone. Add the AutoRemote context. levels. go into Tasker. The message should now play at that time. register your device.This is more of a tip than an example. select. you can create a scenario where starting up Photoshop on your computer automatically makes a control panel for it appear on your phone. Tie the context to a new task. Note that this is a “dumb” version of such a system. Example 6: Remote access todo list EventGhost and Chrome extensions are all good. which will then be spoken out loud when he leaves work. and set the message filter to “shop. and the message (grocery list) can be added to by using the web interface to send “shop=:=shopping items here” to the device. Example 5: Copy text from Chrome to a device’s clipboard I mentioned the Chrome extension above. By using scenes. Put %arcomm in the text field for this action. but it’s important to not forget what started AutoRemote: Web access. Imagine having a Photoshop scene that has buttons for copy. which I have had installed for quite a while now. paste. which then trigger keyboard input there. and create a new profile. Select Event Behaviour. and have the message play based on for instance leaving a WiFi network rather than a specific time. That personal URL you get can be entered into a browser to give you a page that allows you to send messages to the device from any web browser. you should have a new option for AutoRemote where you can copy the selection or open URLs on registered devices. In conclusion The guide continues on in part 7. By tying this to a system where the computer notifies the device when Photoshop is running. Download: Google Play . though at a much slower pace. and then set command name to “Copy. where only the latest message will be read. add to that list with new messages. and set “copy=:=” as the message filter. With all this configured. One of the examples on the Google Play page for AutoRemote is a scenario where a wife sends grocery list items to her husband. %ingredients2 = milk.flour. However. perhaps with the exception of the terminology – we’ve been using child variables throughout the guide. the first flash would be unaffected. an array can be described as a base variable which have several child variables. If you similarly were to clear the array %ingredients. Because variables in an array is arranged in a way that can very easily be referenced. while the second would just flash empty variables.flour. and %ingredients3 = flour. Adding a Flash action for %ingredients would then flash sugar. So far nothing new. Flashing %ingredients() however would tell Tasker to take the value of each child variable and separate them with a comma. from mathematics to programming. separated by a comma. If you were to clear the variable %ingredients and repeat the flashes. The former is accepted as the input into several array-specific action settings in Tasker. %Hello3. what makes arrays special is what you can do with them in addition to what you can do with normal variables. When referring to an array. because the value of the single variable %ingredients is still sugar.milk.milk. and the same sugar. %Hello is then an array with several elements. Each element in an array is a variable. each element being a variable in itself. you end up with a bunch of child variables like %Hello1. . %Hello() on the other hand will list the value of each variable in the array.flour on the second.milk. we suddenly have a whole new set of tools that we can use to manipulate the variables on an array level. which is how we’ve been using arrays for so long without calling them that.flour by the period. you’d end up with the array %ingredients containing %ingredients1 = sugar. it’s common to either refer to them by their base variable (like %Hello) or in the format %Hello(). rather than treat them as individual variables. When you use Variable Split on the variable %Hello. This is because the array remains even though you cleared the variable that created it in the first place. some of which we’ll look at later.milk. %Hello2.flour. If you were to split %ingredients = sugar. so you’d get sugar.milk. so it can be used as a variable. part 7: Variable arrays What’s an array? Arrays are common in many areas.Beginner’s guide to Tasker. you need to get out of the mindset as variables as single entities. etc. you’d get an empty %ingredients on the first. To use arrays. In Tasker.  %arr(#<) The index of the last defined array element. each line being a new variable in the array. %arr2. Referring to arrays Since arrays are numbered lists of variables. to count the number of lines in a text files. That’s because we used it in an example in part 5 of the guide. Perhaps the most common mistake when dealing with arrays is to refer to one when you mean the other. you get some new ways to refer to them.d)  %arr(1:2) All the defined elements with indices from 1 to 2 (a. . c and d then we have an array with 4 elements. b. however it is also possible to access them in special ways. so I’ll just quote them here: If the four variables %arr1. %arr4 hold respectively a. causing whatever you do to be based off a single variable instead of an array. What really happened was that we read a text file into an array. Using (#) behind the base variable then makes Tasker count the number of variables in that array. or 0 if none are defined (4)  %arr(#?b/c) A comma-separated list of the array indices (lowest to highest) with matching values.b. Here are some examples:  %arr(#) The number of defined array elements (4 in this case)  %arr(#>) The index of the first defined array element.c. %arr3. or vice versa. The list of these ways are available in the official user guide. These variables can be used just like any other. because %ingredients can refer to the single variable %ingredients or the array %ingredients.This can be a bit confusing.c. or 0 if none match (2. or 0 if none are defined (1). %arr(#).d)  %arr(2) or just %arr2 The content of the element with index 2 (b)  %arr(2:4) Contents of defined elements with indices 2 to 4 (b.b.3 in the example)  %arr(>) The contents of the first defined array element (a)  %arr(<) The contents of the last defined array element (d)  %arr() or %arr(:) All of the array elements separated by commas (a.c)  %arr(3:) All the defined elements with indices starting from 3 (c.d)  %arr(:3) All the defined elements with indices up to 3 (a. which in turn is the number of lines.b) Keen eyes might recognize the first of these. One method that is missing here (because it’s not exclusive to arrays) is the format %arr(%variable). It asks you for a variable. since it has it pretty much nailed down: 1. each with one of the items from the list. in this case the lonely Flash action. using Array Push to add an initial element 4. 2. I’ll once again quote the official user guide on this.g.You will of course also recognize %arr() here. @ and specify @ also in the Variable Split action.c. For instance: “ For. For each item in the list.” 5 flash messages appear.b. . %arr3. For/End For creates a group inside the task. like List Files mentioned here. For loops The For and End For actions are found together with If. These methods listed above show us different ways of referring to arrays. as you for instance need to make sure that if you save something with each. some other actions also create arrays for their results e. one time for each item in the list. It takes some getting used to. you can refer to the array element in that spot in the array by using this format. can also create them.d Variable Split %arr If your data has commas in it.g.how. I already covered Variable Split. Items: hello. that file name has to be unique for each item. it’s actually very powerful. using Variable Split: Variable Set %arr a. Other than that. allowing us to for instance refer to the last element in an array without knowing what number that is. 3. and End If actions in Tasker. Each time. The initial For action can be a bit confusing.you Flash: %itemtoflash End For This would loop the group. as well as a comma separated list of items. starting with “hello”. but once you get a hang of it. The benefit of this system is that you can specify a set of actions and then run a whole bunch of values through it without needing to duplicate the actions for each time. c.world. you can also create them manually with Variable Set or Variable Push. List Files Variable Split is perhaps the most common source for arrays. Else. the For action will run the actions in the For group with the current item as the value of the specified variable. Variable: %itemtoflash. ending with “you. you can separate the values with e. Assuming you have a %variable with a numerical value. the variable %itemtoflash will be updated with the next item in the list. by assigning individual elements with Variable Set: Variable Set. in this case 5 times. which is the same as what we just talked about above. where nested actions are visible nested in that group. although some other actions.are. Like If/End If. How arrays are created As for how you make arrays. The items in the list can both be selected and tapped. each item can be selected.e. which is directly compatible with the text file by writing %Array() to the text file (writing the value of each array element. The benefit of this was that the list would be formatted for reading in the text file directly. Each list is still stored in a text file. I’m going to cover the generic list here as the trio adds a bit of complexity to it all. which most people are familiar with through the Menu alert action. The system I came up with uses arrays at its core. separated by a comma). the items are stored in a global array. it creates a menu list where each array element is an item in the list. making single selection impossible and whatnot. each line being separated by a line shift. and is quite a bit more effective than the old one. The new list is based around arrays. which automatically populates a scene with such an element for you. The first todo list system I created in Tasker used methods that weren’t ideal. You can use that element on its own as well. The downside was that the entire list became a single entity. and with no use for a more direct splitter. and reading it back into a variable which you then split by the comma (reverting it back into array form). which means that we suddenly have the tools needed to make the todo list a bit more like a third party todo list app – i. Instead.Example: Todo list V2 Recently I decided to redo my entire todo list system (which is described in part 3 of the guide) to give it better performance and more features. I also added a new generic todo list that doesn’t trigger any alarms. The array can then be used as the source for a menu scene element. . Adding to the list was done by saving to a text file. but the text file is more of a backup feature than it is the main storage for the items. and by using an array as the source. along with redoing my three situation-specific lists. a file that was read into a single variable and showed in a text field.  Variable Set %Gtselectedd to 0 (resets a variable used later. The Item Tap tab task for the menu scene element contains the following:  Variable Set %Gtselected to %select_indices  Variable Split %Gtselected. The Item Layout option has a scene besides it that can be clicked and edited. File: gentodo. Position 1. If %Gentodo doesn’t match ++(removes the first entry in the list if it’s blank. Source is here set to Variable Array. It determines how each item looks. covering most of it. Splitter: . but I’m sure I had a reason for it when I did it)  Show Scene Generic Todo The scene: Menu element The menu element is the heart of the scene.txt To Var: %Gentodo (reads my generic todo list text file into a variable)  Variable Split %Gentodo. since I wanted to be able to select multiple items. My generic todo list has a static image of a holo themed pin in front of the text field. Aside from having a few predetermined elements.Trigger task There’s quite a bit that’s needed to make this work. and Variable is then %Gentodo. I frankly don’t remember the circumstance where that was needed. variable refers to the base variable of the array in order to also know what the array is. Note that menu scene elements have internal scenes. this internal scene is the same as the scenes you’re used to. and it’s pre-populated with a dynamic text field and a dynamic icon field. Selection Mode is set to Multiple. Had it asked for a variable. but you can still use this to choose how it will end up looking. %Gentodo would have been treated as just that single variable. It looks like this:  Read File. Those will be populated with data from the menu element’s source. Splitter: . Double D is not a typo)  Array Pop %Gentodo. starting with the trigger task. Note that since source is an array. which ends up looking like a bullet point when the menu element is fully populated. You can also add more to it yourself.  Variable Set %Gtselectedd to %Gtselected(#) . 2. So. . lots of nested stuff here. The actions in the Long Tap tab task are as follows:  If %Gtselectedd > 0 o Menu. Name: %shuffle. The first is handled by a simple Destroy Scene in the Tap tab task. Value: 1  Variable Subtract. Text: %Gentodo() End If So. So. The first If simple makes sure that there are selected items before you try to run some delete task on them. starting at 0 (this will be changed later). Position:  Variable Add. Items: %Gtselected()  Variable Add. as it is now. Item 1: Yes (Variable Set %Gtcd to 1). there’s no system here to handle that situation. Keen eyes may have noticed that while we reset %Gtselectedd in the launch task. Value: %shuffle. Title: Delete %Gtselectedd items?. Name: %gendelete. you have an array with the numbers for those items as well as a variable with the number of items selected.%select_indices is an automatically generated variable (one of four. As such. Value: 1 %gendelete o  End If  Variable Set %Gtcd to 0  Variable Clear: %shuffle  Variable Set: Gtselectedd to 0  End For  Write File. the other three being %select_labels. %tap_label. %select_indices will show 0. The scene: Delete button The delete (X) button in my scene has two functions: simply cancel out of the scene. 3. which is then put into %Gtselectedd. In short. Name: %gendelete. 5 on the list. Variable: %gendelete. Deleting items is more complicated. Variable: %Gentodo. you have to refresh the entire scene to properly deselect the last item. by the time you’ve selected something in the menu scene element. Basically. Item 2: No (*nothing*) o If %Gtcd matches 1  For. and delete items. It contains a comma separated list of the item number of the selected items. and %tap_index) that is populated when you interact with the menu scene element. If %shuffle doesn’t match *shuffle*  Array Pop. That brings us to the delete function. and is triggered by holding down on the button. %Gtselectedd shows the number of selected items. Warning: There’s currently a bug where %select_indices doesn’t clear itself if you deselect the last item.txt. %Gtselected(#) counts the number of items in the array %Gtselected. if you select items 1.4. File: gentodo. It runs the four nested actions once for each element in the array %Gtselected. where the previous number 5 is now number 4. however. because all the array elements get pushed down when we remove an element.” Right now. Wait. used in the following four actions. The second action in the For loop. the first simply fixes a “developer brain fart. This action simple creates a new pop-up box using the standard menu action. so we give it the %Gtselected() form. but only if %shuffle actually has a value (the If condition takes care of this). it effectively disables the Long Tap task if nothing is selected. so that it’s always 0 unless you click Yes to confirm deletion. and then it goes on to the next element. in this case with Yes and No items in order to create a simple confirm dialog. When the For loop then comes around to pop number 5. we bring that number up to the level of the array. The Variable Subtract action in spot two of the group subtracts this number from the number of the element we’re going to pop. we won’t ever get a situation where we accidentally delete last time’s selected items. By simply using Array Pop with %gendelete as the position. By adding 1 to %gendelete. but it’s too silly to leave like that. we pop out the array that’s in that position in the list. because we have all the information in the array – so the file is outdated. the value of that element will be written to %gendelete. Clicking Yes sets a variable that the following If group is dependent on. which in turn contains the number for the selected menu item. Unlike the first version of the todo list. on purpose. you skipped an action! Yes. %shuffle then represents the number of times the list has been shrunk. menu items start at 0. it should be the same as the tap indices obviously. because the entire delete task is nested in an If for %Gtselectedd (which is reset every time). However. we write a comma separated list of items to it. By writing %Gentodo() to the file. we add 1 to %shuffle at the end of each loop. For each element in the %Gtselected array. then the number of the fifth item will have to be adjusted down by 4 in order to match up. The other elements in that array then get pushed down so that if you remove the third array element in a five element array. . not necessarily an array. and then split to an array the next time we open the scene. That means that the last values in the %Gtselected array persists. we here overwrite the entire file. number four becomes number three. so that menu item 1 is the same as array element 1. Next we have our For loop.5 (always in order. it becomes very easy to remove things from the array. The Menu action that sits as the first action in the If group must not be confused with the menu scene element that I’ve referred to so many times. combined with the fourth. the array element numbers will match the menu item numbers. When we then read that back into a variable. the numbers won’t match after the first time! Let’s say we have 10 items in the list/array. The For loop then pops element 3 from the array. When those two match. The first time the loop runs. fixes an inherent issue with this system. When the loop is done looping. using the third action in the For loop. As for the four nested actions. it pops what was number 6 when you selected the items To fix this problem. the value of array element 1 is the same as menu item 0.there’s no Variable Clear for %Gtselected. %select_indices will then show 3. it’s time to write the changes to the file. no matter which one you select first). It’s going to cause problems for some people’s scenes. we simply split by the comma. If we delete 5 items. putting its value in %gendelete. The Items field here wants a comma separated list. while array elements start at 1. and so on. once we have added 1 to compensate for the difference in starting position. So. That variable is also reset at the end of the task. On top of that. Array Pop. This will be fixed soon according to the Tasker developer: “ Will fix that. leaving us with 9 elements. and we select number 3 and 5. it simply adds it after the last one.4. if only for the sake of it. They all work by reading the contents of the file. i. morning) also use this new array system. “todo tag=:=item name.” It’s as simple as that. if you have a 10 element array. just slightly different to accommodate three lists in the same scene. and%Gtselectedd. and in those cases. AutoRemote integration All my todo lists can now be added to remotely from AutoRemote. The basic concept is the same. This system had to be changed when I redid the todo system itself. but I think the benefit of being able to add a bunch of items in one go makes up for that. The Tap tab task looks like this:  Variable Query. The scene: Selected item indicator There’s a text field on the bottom of the scene showing “%Gtselectedd items selected. you’re pretty much guaranteed that the array is smaller than that. but when the list is refreshed (scene destroyed. A nice side effect of using arrays is that when the file contents are read into the variable. shopping. but the three other lists I have (home. This allows you to add multiple items in one go by adding an item in the format 1. If so.5. Title: New item. By specifying a very high position (it’s over 9000). After that. Text: %Gentodo() %gentoadd  End If This task is simple. it will show as a single list item with all numbers in one. so that they’re ready to go next time. So. name: %Gentoadd.txt. it uses Array Push to add that to the array. I didn’t actually think %shuffle needed clearing since it’s a local variable. The format for adding is the same. It starts by using the Variable Query action to ask the user for the title of the item to add.3. 9001. Position. it will become number 11. but that doesn’t affect the alert systems. Variable% gentoadd  If %gentoadd doesn’t match *gentoadd* o Array Push. Items are now separated by a comma instead of line shift. It then does an If check to see if something was actually entered into the variable. a comma that you put in is treated the same as a comma that originally separated array elements. which is new (I used to just use a widget). This does mean you can’t use commas in the titles as the title will then be split. not number 9001.” just with the addition of a . %shuffle. Value: o Write File. then add a new item. File: gentodo. The scene: Refresh button Alerts This is my generic list. The scene: New item button The button to add a new item isn’t very complicated. it writes the changed array to the file. relaunched) each of the items seperated by a comma will be its own item. but it turns out that if you were to delete something in several batches while in the scene.2.e. %shuffle would continue counting with the last used value if not cleared. so you’d assume that those needed changing – but they don’t really. We essentially clear %Gtcd. then acting based on that. Once added.At this point we end both our If groups and move to the three actions that can always run. Those three lists all have different alerts. checking to see if there’s anything in the file. and a command like “todo shopping. independent from the If groups. Text: %Gentodo() End If By now you know what all of these do as they’ve been used before. and send to my todo list (receiving end is the same as above). there are four such groups in the same task. this group looks like this:   If %arpar2 matches generic/universal o Read File. It’s a very handy option to have. The only real difference is that it pushes %arcomm into the array instead of %gentoadd. o Array Push. name: %Gentoadd. Splitter: . is this:  Say “Item added to %arpar2 list” AutoRemote Chrome integration So far I’ve only used the AutoRemote Chrome plugin to copy text from my browser to my phone. File: gentodo. Like I said. right click. so I simply added a bunch of rules to the Chrome plugin. Each rule has a name that doesn’t really matter. one for each of my four lists.txt.generic/universal list tag. File: gentodo. as I can just go to any search field (like on google. type something in.txt To Var: %Gentodo (reads my generic todo list text file into a variable) o Variable Split %Gentodo. right click it.” This then allows me to select text in Chrome. At the end. Video . Position. 9001. Value: %arcomm o Write File. and send to any of my lists. I thought I would make it easier to add items to my list. The If condition for each group is then a match with the appropriate tag. The task that activates upon receiving a message in that format then has four If groups that are all identical except for the variables and file paths being adapted to each list.com). For the universal list. It doesn’t matter much on a small todo list. o Variable Set %Gtselectedd to %Gtselected(#) Else o  Variable Set %Gtselectedd to 0 End If In conclusion Arrays and For loops can save you a lot of hassle. where it does matter. the current iteration works great. where the whole thing slows down significantly because the global variables have to be set all the time. Splitter: . . The change in the todo list is that you don’t add 1 to %gendelete with the fix. which means that the next release version will also have them fixed. I originally made such a browser using arrays and found it to be extremely slow. at least for my use. it turned out that arrays were extremely inefficient in that particular situation. There may very well be a V3 of this list somewhere down the line. and the Item Tap tab task in the menu scene element should be like this:   If %select_indices doesn’t match *select* o Variable Set %Gtselected to %select_indices o Variable Split %Gtselected.2b2 and above Turns out that the array/menu numbering difference and the deselect bug have both been fixed in the latest Tasker beta. Even so. Right now there’s something of an issue with global arrays and menu scene elements.Update: Tasker beta 1. as I already know several ways to speed it up. but in a later article I’ll show how to make a Tasker-based file browser.3. and after some help from another Tasker user.
Copyright © 2024 DOKUMEN.SITE Inc.