|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#21
|
||||
|
||||
|
Un problema, en apariencia sin solución por su complejidad, siempre se puede dividir en pequeñas porciones sencillas de solucionar. El velocímetro sólo debe aparecer cuando se inicia el modo navegación de Maps. ¿Cómo detectamos que estamos en modo navegación de Maps? Código:
Perfil: VelocimetroMapsON Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMaps Perfil: VelocimetroMapsOFF Evento: Notificación eliminada [ Aplicación origen:Maps Título:* Texto:* Subtext:* Other Text:* Categ.:* ] Aplicación: Maps Entrada: VelocimetroMaps Código:
Tarea: VelocimetroMaps Abortar Tarea Existente Si (if) [ %caller1 ~ *on ] ... tarea iniciada desde el perfil VelocimetroMapsON ... ... BUCLE ... Else ... tarea iniciada desde el perfil VelocimetroMapsOFF ... Fin si (End if) Código:
Tarea: VelocimetroMaps Abortar Tarea Existente Si (if) [ %caller1 ~ *on ] ... tarea iniciada desde el perfil VelocimetroMapsON ... Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Apagado ] ... BUCLE ... Else ... tarea iniciada desde el perfil VelocimetroMapsOFF ... Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Encendido ] Fin si (End if) Código:
Probar Pantalla [ Tipo:Orientación Almacenar Resultado:%pantalla ] Si (if) [ %pantalla ~ portrait ] ... vertical/retrato ... Else ... horizontal/apaisado ... Fin si (End if) Código:
Probar Pantalla [ Tipo:Orientación Almacenar Resultado:%pantalla ]
Si (if) [ %pantalla !~ %escena ]
Si (if) [ %pantalla ~ portrait ]
Establecer variable [ Nombre:%posh A:xxx ]
Establecer variable [ Nombre:%posv A:yyy ]
Else
Establecer variable [ Nombre:%posh A:xxx ]
Establecer variable [ Nombre:%posv A:yyy ]
Fin si (End if)
Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ]
Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ]
Establecer variable [ Nombre:%escena A:%pantalla ]
Fin si (End if)
Lo de cambiar la posición de la escena tampoco debería ser un problema con lo que vimos en esta prueba de concepto. Las siguientes acciones, colocadas en la pestaña "Golpe" del elemento que uses como receptor del movimiento, permiten el desplazamiento de cualquier escena, en cualquier dirección, para cualquier orientación y para cualquier resolución de pantalla. Si %posh/%posv tenían valor el movimiento será relativo a esa posición. Código:
Probar Pantalla [ Tipo:Hardware Resolution Datos: Almacenar Resultado en:%res ] Establece Array [ Matriz de Variables (array):%res Values:%res Separador:x ] Establecer variable [ Nombre:%movh A:%stroke_len/%res1*200 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %stroke_dir ~ *left*/*right* ] Establecer variable [ Nombre:%movv A:%stroke_len/%res2*200 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %stroke_dir ~ *up*/*down* ] Restar de variable [ Nombre:%posh Valor:%movh Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *left* ] Sumar a variable [ Nombre:%posh Valor:%movh Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *right* ] Restar de variable [ Nombre:%posv Valor:%movv Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *up* ] Sumar a variable [ Nombre:%posv Valor:%movv Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *down* ] Establecer variable [ Nombre:%posh A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posh < 0 ] Establecer variable [ Nombre:%posh A:200 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posh > 200 ] Establecer variable [ Nombre:%posv A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posv < 0 ] Establecer variable [ Nombre:%posv A:200 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posv > 200 ] Ocultar Escena [ Nombre:%escene_name Animación:Ninguno Continuar Tarea Tras Error:Encendido ] Mostrar Escena [ Nombre:%escene_name Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ] Ahora lo ponemos todo junto y ya lo tenemos casi resuelto. ¿Dónde está el problema?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 25/05/18 a las 11:20:39. Razón: Añadir tarea de movimiento de escena |
|
|
|
#22
|
||||
|
||||
|
Hombre, ya me dirás... "¿Dónde está el problema?" Que tú propones un proyecto y que al final, por mi escasez de conocimientos y porque el hilo se convertiría (como bien diría Caravantes) en un interminable partido de tenis acabas llevandolo a cabo tú. Vamos, que has hecho ya el 99,99%. Y espera WillyWeb, que seguro que tendré problemas cuando lo ponga en pie...
Pienso que por lo menos aprendo, pero también que no me embarcaré mas en proyecto complejos hasta que mis conocimientos sean mayores. Asi que, o proyectos sencillitos (sencillitos para mi) o planteamiento de pequeñas dudas sobre proyectos sencillos que esté creando. Ni de coña hoy, ni quizas mañana, llegaría a lo que has planteado. Se trata ahora, al menos, de entenderlo para aprender e intentar en la medida de lo posible ponerlo yo solo en pie... Que menos. De momento ya tengo la primera duda... Con respecto al perfil que te pondré a continuación: 1. Giro el móvil y tarda en reaccionar la escena. 2. No entiendo el if de la acción 1, ni la acción 11 Perfil: VelocimetroMapsON (112) Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMapsON (113) A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] Si (if) [ %pantalla !~ %escena ] A2: Si (if) [ %pantalla ~ portrait ] A3: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A4: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Else A6: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A7: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Fin si (End if) A9: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A10: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A11: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] O bien ese primer if es realmente una accion aparte de la primera accion y por eso tu End if que yo he suprimido. Si es entonces un if aparte (como accion 2) obtengo el mismo resultado. Última edición por emiegna Día 25/05/18 a las 14:16:09. |
|
#23
|
||||
|
||||
|
No te desesperes que nadie nace sabiendo. Precisamente de lo que se trata es de aprender de lo que hacen otros. Estudia cada parte y ya verás como no es para tanto.
Y esa "adaptación" que has hecho no funcionará. Lo tienes que escritor tal y como te lo he puesto. Tu primer error ... la ejecución de "Probar Pantalla" está condicionada y se tiene que ejecutar siempre.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#24
|
||||
|
||||
|
Código:
01: Probar Pantalla [ Tipo:Orientación Almacenar Resultado:%pantalla ] 02: Si (if) [ %pantalla !~ %escena ] 03: Si (if) [ %pantalla ~ portrait ] 04: Establecer variable [ Nombre:%posh A:xxx ] 05: Establecer variable [ Nombre:%posv A:yyy ] 06: Else 07: Establecer variable [ Nombre:%posh A:xxx ] 08: Establecer variable [ Nombre:%posv A:yyy ] 09: Fin si (End if) 10: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] 11: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ] 12: Establecer variable [ Nombre:%escena A:%pantalla ] 13: Fin si (End if) Luego comprobamos si %pantalla es distinto de %escena para actuar en consecuencia. La idea es que si la orientación de la pantalla es distinta a la que tenías cuando mostraste la escena la tienes que repintar de nuevo en las coordenadas correspondientes ... ¿lógico, no? El IF de 03 a 09 asigna valor a %posh y %posv en función de la orientación (portrait = vertical). Luego ocultamos la escena para mostrarla inmediatamente en las nuevas coordenadas. Y para terminar guardamos en %escena la orientación que tiene la pantalla en ese momento. Mientras que %pantalla no cambie (ver 01) y sea diferente de %escena (ver 02) todo ese bloque no se vuelve a ejecutar. ¿Por qué funciona la primera vez? ... porque %pantalla contiene portrait o landscape y %escena está sin definir ... es decir, que no son iguales (ver 02), así que la escena se mostrará en el sitio que corresponda a la orientación de ese momento. ¿Más claro ahora?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#25
|
||||
|
||||
|
Te has explicado como un libro abierto. Gracias
![]() Que ganas de seguir metiendole mano al tema, pero llega el fin de semana (es curioso) y "me dejan" menos tiempo libre. Lo iré haciendo a ratos. Comprendiendo y poniendo en pie, claro. Hacer, hacer lo has hecho tu. Tu creas una unica tarea y ahi metes mis dos tareas ON/OFF. Perfecto. Estaba estudiando la tarea de la pestaña Golpe en la escena. Funcional genial. Es un lio, pero voy entendiendo. Le meteré mano a la parte del velocimetro y te cuento. Gracias por tus explicaciones, WillyWeb
|
|
#26
|
||||
|
||||
|
Pues claro que sí hombre. Si esto es muy entretenido.
Código:
01: Probar Pantalla [ Tipo:Hardware Resolution Datos: Almacenar Resultado en:%res ] 02: Establece Array [ Matriz de Variables (array):%res Values:%res Separador:x ] 03: Establecer variable [ Nombre:%movh A:%stroke_len/%res1*200 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %stroke_dir ~ *left*/*right* ] 04: Establecer variable [ Nombre:%movv A:%stroke_len/%res2*200 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %stroke_dir ~ *up*/*down* ] 04: Restar de variable [ Nombre:%posh Valor:%movh Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *left* ] 05: Sumar a variable [ Nombre:%posh Valor:%movh Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *right* ] 06: Restar de variable [ Nombre:%posv Valor:%movv Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *up* ] 07: Sumar a variable [ Nombre:%posv Valor:%movv Módulo (wrap around):0 ] Si (if) [ %stroke_dir ~ *down* ] 08: Establecer variable [ Nombre:%posh A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posh < 0 ] 09: Establecer variable [ Nombre:%posh A:200 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posh > 200 ] 10: Establecer variable [ Nombre:%posv A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posv < 0 ] 11: Establecer variable [ Nombre:%posv A:200 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posv > 200 ] 12: Ocultar Escena [ Nombre:%escene_name Animación:Ninguno Continuar Tarea Tras Error:Encendido ] 13: Mostrar Escena [ Nombre:%escene_name Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ] La longitud del movimiento del dedo se mide en puntos de pantalla, pero las coordenadas de posición de la escena usan una escala propia (0 - 100 - 200 = izq/arr - cen - dch/abj). En tu caso los 1080x1920 puntos de pantalla equivalen a los 200x200 de esa escala que se inventa Tasker, así que un movimiento vertical de 540 puntos implica un desplazamiento vertical de 100 unidades (la mitad de los puntos = la mitad de la escala-escena) ... fácil. La idea es convertir puntos a escala-escena para hacer desplazamientos proporcionales al movimiento del dedo. ![]() Detectamos la resolución de la pantalla y la guardamos en %res (tiene la forma 0000x0000) y luego dividimos %res usando como separador la "x" para tener la resolución vertical en %res1 y la horizontal en %res2. En 03 y 04 hacemos una regla de tres para calcular la equivalencia entre puntos y escala-escena dependiendo si la dirección del movimiento es horizontal, vertical o diagonal. Eso se consigue poniendo las palabras clave entre asteriscos para detectarlas en el caso de que aparezcan combinadas. Los desplazamientos en diagonal no son precisos al 100% pero es una aproximación más que suficiente. De 04 a 07 sumamos/restamos el movimiento h/v a la posición h/v según corresponda a la dirección del movimiento. De 08 a 11 comprobamos que en las operaciones anteriores no se han sobrepasado los límites de la escala (0 a 200) y lo ajustamos si es necesario. Y finalmente en 12/13 ocultamos la escena y la mostramos en las nuevas coordenadas. ¿A que no es tan complicado como parecía a simple vista?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#27
|
||||
|
||||
|
Creo que uno de los problemas es que estás probando/intentnado demasiadas cosas a la vez, o un conjunto demasiado grande. Cuando yo he tenido dificultades de ese tipo, siempre me ha ido bien dividir el problema en partes más pequeñas para afrontar cada dificultad separadamente. Por ejemplo, dices que no te ha funcionado lo de PROBAR PANTALLA. Yo me acabo de hacer una tarea sencilla para aprender a controlar eso. 1. Acción > Pantalla > Probar pantalla > Tipo=Orientación. Guardar el resultado en la variable %position. 2. Flash "%position Vertical" Si %position~*port* 3. Flash "%position Horizontal" Si %position~*land* Pongo el smartphone en vertical y lanzo la tarea, que me muestra "portrait Vertical". Pongo el smartphone en horizontal y lanzo la tarea, que me muestra "landscape Horizontal". Correcto. Si algo tan sencillo te da algún fallo seguramente sea por los asteriscos. Puedes eliminarlos si pones la palabra completa: portrait / landscape. Si pones los asteriscos tienes que asegurarte de no dejar ningún espacio a los lados del asterisco. Otro posible fallo es escribir la variable con distinto nombre en unas y otras acciones. Para evitarlo yo suelo hacer copiar&pegar el nombre de la variable. Además, fíjate que he puesto en el flash la variable para que el Flash me muestre el contenido de esa variable, es una forma de asegurar: si la variable no contiene nada seguramente sea porque escribí mal el nombre. Por último, cabe una posibilidad (muy remota) de que esto no funcione en tu smartphone, ya sea porque el hardware no incluye esta función o porque se haya averiado el sensor. Todas estas comprobaciones, para cada cosa, te ocuparán un tiempo extra, pero luego sabes que puedes incorporarlo a tu proyecto con ciertas garantías. Respecto al bucle y la escena, a ver si te sirve esta idea: haz que la escena se muestre en una de las primeras acciones de la tarea. Luego continúas con el resto de la tarea que se va a repetir en bucle. Al terminar las acciones del bucle haces un GOTO para reiniciar el bucle pero no dirijas el GOTO a la primera acción de la tarea, sino a la acción siguiente a la que muestra la escena. De esta forma la escena solo se muestra una vez al comienzo de la tarea y no se muestra en las siguientes ejecuciones del bucle. Suerte, y vete comentando los progresos y/o cada una de las dificultades.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#28
|
||||
|
||||
|
WillyWeb, te has explicado perfectamente. Lo he entendido para explicarselo yo a otra persona. El problema no eres tu. Soy yo. A veces no capto
Por cierto, lei algo por ahi de upright, upleft, etc para movimientos diagonales... Caravantes, he hecho la prueba con flash. Al menos el móvil funciona correcto. Pero no se porque el perfil me sigue funcionando mal. Es decir, enseguida que giro el móvil la escena no se muestra en las coordenadas fijadas. Puede tardar unos segundos. Y tienes razón, hay que ser muy "mijita" (como decimos en mi tierra) con Tasker, los nombres de las variables, espacios, etc. El mas mínimo error se paga caro (es un decir). Lo primero que suelo hacer cuando algo no funciona es repasar todos esos aspectos.Buena idea lo del GOTO. A ver si me pongo ya a ello. El fin de semana lo tengo complicado, pero buscaré huecos. El perfil al que me refiero es el de WillyWeb. A vosotros os va bien (entiendo), pero no se porque a mi no si la prueba simple que he hecho con flash ha sido correcta y WillyWeb tiene el mismo movil que yo. Perfil: VelocimetroMapsON (112) Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMapsON (113) A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] A2: Si (if) [ %pantalla !~ %escena ] A3: Si (if) [ %pantalla ~ portrait ] A4: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A9: Fin si (End if) A10: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A11: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A12: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A13: Fin si (End if) Edito: Caravantes, releyendo he visto que referido al GOTO comentas mostrar la escena una sola vez. Me pierdo... La escena ha de ocultarse y mostrarse de nuevo cada vez que giro. Es inevitable, que yo entienda. Última edición por emiegna Día 26/05/18 a las 01:52:22. |
|
#29
|
||||
|
||||
|
Ejecuta la tarea "VelocimetroMapsON" cada vez que llegue una notificación de Maps mientras que la aplicación Maps está abierta. Analiza la tarea... Comprueba la orientación de la pantalla y muestra la escena "VelocimetroMaps" en una posición ajustada a la orientación ... y punto. La tarea ya no se ejecuta más veces hasta que se cumplen las condiciones del perfil, y eso pasa cada pocos segundos porque es cuando Maps genera una nueva notificación. Añade un "ESPERAR" de 200 milisegundos y un "IR A" acción 1 y verás como sí que hace lo que esperas. Ten en cuenta que lo que estás probando es sólo una parte ese bucle que te he comentado en el post #21 y lo estás haciendo fuera de contexto.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#30
|
||||
|
||||
|
Parece que la única misión de la tarea es presentar la escena de forma acorde a la orientación del smartphone. En tal caso el bucle puede recorrer toda la tarea, pero solo debe quitar/reponer la escena cuando el dispositivo cambie la orientación. Si la orientación se mantiene igual que en la comprobación anterior es preferible no quitar/reponer la escena, para evitar los parpadeos (entre otros problemas). El cambio de orientación lo controlas con las variables %pantalla y %escena, tal como lo tienes en la última tarea que has copiado. Pero en esa tarea no has puesto ningún bucle, se recorre una sola vez y luego se acaba. ¿? Trata de averiguar si tanto retardo está ocasionado por la detección de la orientación o por otra cosa como podrían ser las acciones de quitar y reponer la escena. Sugerencia: Copias la tarea con un nombre nuevo. En la tarea nueva, sustituyes las acciones de quitar/reponer la escena por una acción BIP (pitido breve) y añades una segunda acción Flash que muestre "vertical/horizontal" según corresponda. Y luego pruebas a ver cómo se detectan los cambios de orientación con esta nueva tarea. Si en esta nueva tarea ves que hubiera menos retardo sería por cierta lentitud "intrínseca" de las acciones que quitan y reponen la escena. Si tienes el mismo retardo seguramente sea por el sensor o por la comunicación de Tasker con el sensor.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#31
|
||||
|
||||
|
Nota: Ver post siguiente despues de este (creo que me voy enterando)
WillyWeb, ando intentando seguir al pie de la letra el post 21. Hay poca información sobre %caller1. Lo poco que he visto es una explicación tuya en la que interviene también Caravantes. No sé si es *on, u *on*. En cualquier caso no me funciona. O bien *enter o *enter*. Tampoco me va. Entiendo que es necesario el bucle, pero si lo sigo al pie de la letra (el post 21)se bloquea el móvil. Supongo que será por culpa del bucle. He tenido que desactivar Tasker. La tarea (creo) debe empezar mostrando la escena en una ubicacion específica atendiendo a la orientación. Creo que luego (if %caller1 ~ *on) se repite la tarea únicamente si cambia de orientación, pero no volviendo a la accion 1 de la tarea, sino a %caller1 (¿Una "llamada" al comienzo de la la tarea?) y sino (Else) ¿? Si apagamos el perfil (esta tarea pertenece a este perfil) para que no se repita la tarea ya no atenderia a los cambios de orientación. En algún (o algunos... ) sitios me pierdo. Me pierdo demasiado. Lo que mejor entiendo es la tarea de la orientación y su bucle (espera de 200 ms e ir a acción 1). Se que este primer perfil no es. He querido atender literalmente el post 21 y me equivoco, sin duda. (A continuación pongo 2 perfiles que entiendo sí funcionan). Todo ello sin añadir aun el asunto del velocímetro, claro. Aquí de momento solo estamos tratando la escena (ojú). Perfil: VelocimetroMapsON (11) Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMaps (26) Abortar Tarea Existente A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] A2: Si (if) [ %pantalla !~ %escena ] A3: Si (if) [ %pantalla ~ portrait ] A4: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A9: Fin si (End if) A10: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A11: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A12: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A13: Fin si (End if) A14: Si (if) [ %caller1 ~ *on ] A15: Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Apagado ] A16: Ir a acción [ Tipo:Número Acción Número:14 Etiqueta: ] A17: Else A18: Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Encendido ] A19: Fin si (End if) Sin embargo estos dos perfiles sí funcionan. ¿Cual es el problema, si en lo que propones también existe bucle y en consecuencia consumo? Perfil: VelocimetroMapsON (11) Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMapsON (8) Abortar Tarea Existente A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] A2: Si (if) [ %pantalla !~ %escena ] A3: Si (if) [ %pantalla ~ portrait ] A4: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A9: Fin si (End if) A10: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A11: [x] Si (if) [ %pantalla ~ %escena ] A12: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A13: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A14: [x] Fin si (End if) A15: Fin si (End if) A16: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ] A17: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ] Perfil: VelocimetroMapsOFF (16) Evento: Notificación eliminada [ Aplicación origen:Maps Título:* Texto:* Subtext:* Other Text:* Categ.:* ] Aplicación: Maps Entrada: VelocimetroMapsOFF (97) Abortar Tarea Existente A1: Detener [ Con error:Apagado Tarea:VelocimetroMapsON ] A2: Destruir Escena [ Nombre:VelocimetroMaps ] Última edición por emiegna Día 27/05/18 a las 19:07:13. |
|
#32
|
||||
|
||||
|
Estos dos perfiles me funcionan perfectamente (creo... En mi linea). Voy siguiendo paso a paso por accion en la ventana de Tasker pulsando abajo en el triangulo "play" con linea vertical y las acciones dentro de %caller1 se ejecutan:
VelocimetroMapsON (8) Abortar Tarea Existente A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] A2: Si (if) [ %pantalla !~ %escena ] A3: Si (if) [ %pantalla ~ portrait ] A4: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A9: Fin si (End if) A10: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A11: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A12: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A13: Fin si (End if) A14: Si (if) [ %caller1 ~ *on* ] A15: Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Apagado ] A16: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ] A17: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ] A18: Fin si (End if) VelocimetroMapsOFF (97) Abortar Tarea Existente A1: Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Encendido ] A2: Detener [ Con error:Apagado Tarea:VelocimetroMapsON ] A3: Destruir Escena [ Nombre:VelocimetroMaps ] |
|
#33
|
||||
|
||||
|
¿Y así?...
VelocimetroMapsON (8) Abortar Tarea Existente A1: Probar Pantalla [ Tipo:Orientación Datos: Almacenar Resultado en:%pantalla ] A2: Si (if) [ %pantalla !~ %escena ] A3: Si (if) [ %pantalla ~ portrait ] A4: Establecer variable [ Nombre:%posh A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A5: Establecer variable [ Nombre:%posv A:173 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%posh A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A8: Establecer variable [ Nombre:%posv A:155 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A9: Fin si (End if) A10: Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ] A11: Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Sistema Mostrar Botón Salida:Apagado Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ] A12: Establecer variable [ Nombre:%escena A:%pantalla Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A13: Fin si (End if) A14: Si (if) [ %caller1 ~ *on* ] A15: Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Apagado ] A16: Establecer variable [ Nombre:%novel A:- Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A17: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ] A18: Si (if) [ %TIMES-%LOCTMS < 20 ] A19: Establecer variable [ Nombre:%vel A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] A20: Establecer variable [ Nombre:%Velocidad A:%vel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad ~ %novel ] A21: Establecer variable [ Nombre:%pas A:ceil(abs(%Velocidad-%vel)*0.75) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] A22: Establecer variable [ Nombre:%Velocidad A:%Velocidad+%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad < %vel ] A23: Establecer variable [ Nombre:%Velocidad A:%Velocidad-%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > %vel ] A24: Else A25: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A26: Fin si (End if) A27: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ] A28: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ] A29: Fin si (End if) |
|
#34
|
||||
|
||||
|
Pues pensaba yo que había dejado claro que en el post #21 había descrito el esqueleto del proyecto y sus partes principales explicando la razón de ser de cada una. Y que también estaba claro lo que va dentro y fuera del bucle principal. Pero no debía estar tan claro. ![]() Vamos a ponerlo todo junto y ordenado para ver si se entiende mejor. Crea estos perfiles con esos nombres ... Código:
Perfil: VelocimetroMapsON Evento: Notificación [ Aplicación origen:Maps Título:* Texto:* Subtext:* Messages:* Other Text:* Categ.:* New Only:Apagado ] Aplicación: Maps Entrada: VelocimetroMaps Perfil: VelocimetroMapsOFF Evento: Notificación eliminada [ Aplicación origen:Maps Título:* Texto:* Subtext:* Other Text:* Categ.:* ] Aplicación: Maps Entrada: VelocimetroMaps Código:
Tarea: VelocimetroMaps
Abortar Tarea Existente
Si (if) [ %caller1 ~ *on ]
Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Apagado ]
Establecer variable [ Nombre:%novel A:-- Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
Etiqueta [ INICIO DEL BUCLE ]
Probar Pantalla [ Tipo:Orientación Almacenar Resultado:%pantalla ]
Si (if) [ %pantalla !~ %escena ]
Si (if) [ %pantalla ~ portrait ]
Establecer variable [ Nombre:%posh A:xxx ]
Establecer variable [ Nombre:%posv A:yyy ]
Else
Establecer variable [ Nombre:%posh A:xxx ]
Establecer variable [ Nombre:%posv A:yyy ]
Fin si (End if)
Ocultar Escena [ Nombre:VelocimetroMaps Animación:Ninguno Continuar Tarea Tras Error:Encendido ]
Mostrar Escena [ Nombre:VelocimetroMaps Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ]
Establecer variable [ Nombre:%escena A:%pantalla ]
Fin si (End if)
Si (if) [ %TIMES-%LOCTMS < 10 ]
Establecer variable [ Nombre:%vel A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
Establecer variable [ Nombre:%Velocidad A:%vel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad ~ %novel ]
Establecer variable [ Nombre:%pas A:ceil(abs(%Velocidad-%vel)*0.75) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
Establecer variable [ Nombre:%Velocidad A:%Velocidad+%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad < %vel ]
Establecer variable [ Nombre:%Velocidad A:%Velocidad-%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > %vel ]
Else
Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
Fin si (End if)
Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ]
Ir a acción [Etiqueta: INICIO DEL BUCLE]
Else
Estado del perfil [ Nombre:VelocimetroMapsON Establecer:Encendido ]
Destrir Escena [ Nombre:VelocimetroMaps ]
Fin si (End if)
Código:
Probar Pantalla [ Tipo:Hardware Resolution Datos: Almacenar Resultado en:%res ] Establece Array [ Matriz de Variables (array):%res Values:%res Separador:x ] Establecer variable [ Nombre:%movh A:%stroke_len/%res1*200 Calcular:Encendido ] Si (if) [ %stroke_dir ~ *left*/*right* ] Establecer variable [ Nombre:%movv A:%stroke_len/%res2*200 Calcular:Encendido ] Si (if) [ %stroke_dir ~ *up*/*down* ] Restar de variable [ Nombre:%posh Valor:%movh ] Si (if) [ %stroke_dir ~ *left* ] Sumar a variable [ Nombre:%posh Valor:%movh ] Si (if) [ %stroke_dir ~ *right* ] Restar de variable [ Nombre:%posv Valor:%movv ] Si (if) [ %stroke_dir ~ *up* ] Sumar a variable [ Nombre:%posv Valor:%movv ] Si (if) [ %stroke_dir ~ *down* ] Establecer variable [ Nombre:%posh A:0 ] Si (if) [ %posh < 0 ] Establecer variable [ Nombre:%posh A:200 ] Si (if) [ %posh > 200 ] Establecer variable [ Nombre:%posv A:0 ] Si (if) [ %posv < 0 ] Establecer variable [ Nombre:%posv A:200 ] Si (if) [ %posv > 200 ] Ocultar Escena [ Nombre:%escene_name Animación:Ninguno Continuar Tarea Tras Error:Encendido ] Mostrar Escena [ Nombre:%escene_name Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:%posh Posición Vertical:%posv Animación:Ninguna Continuar tarea inmediatamente:Encendido ] Y ya te digo que así funciona sin problemas.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 27/05/18 a las 22:53:19. |
|
#35
|
||||
|
||||
|
Gracias WillyWeb.
![]() Ya estaba viendo que sobraba el obtener ubicación. Me lo dijiste. ¿Pa qué, si abro Maps? Ya, ya... Y la segunda parte de la tarea (Else) no se lo que yo hacia, pero no me funcionaba. Por eso opté por dos perfiles con sus tareas. Bueno, nuevamente el merito es exclusivamente tuyo. Mañana lo pruebo y te digo
|
|
#36
|
||||
|
||||
|
Bueno, ya lo he probado. Obviamente funciona perfectamente.
Muchas gracias a ambos (WillyWeb y Caravantes) por todo. Por enseñarme y por vuestra paciencia. Procuraré embarcarme desde ahora en proyectos mas sencillos hasta que vayan mejorando mis conocimientos.
|
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||