PDA

Ver la Versión Completa : [ SOLUCIONADO ] Destruir escena rapidez


emiegna
24/01/23, 19:18:59
Tengo dos escenas de dos perfiles diferentes. Uno que me indica la temperatura exterior actual. Y otro que me indica si tengo el sistema en modo oscuro o modo claro y que al mismo tiempo me permite cambiar de un modo al otro haciendo clic sobre ellos.

Ambas escenas las destruyo, sin ninguna acción previa en la tarea y como única acción en un solo perfil cuyo contexto es el evento de desbloqueo de pantalla.

No sé cuál es la forma más rápida para que se destruyan las escenas, pues antes debe desbloquearse el móvil para que se ejecute la tarea. Es decir, en estos casos se destruye la escena en la pantalla de inicio, no en la de bloqueo. Obvio por otro lado. Sino el móvil sería adivino (y costaría una pasta). Y ocultando la escena previamente estamos en las mismas.

Y bueno, estoy buscando la forma de que se destruyan más rápido para que se noten lo menos posible, o bien una idea original que no se me ocurre.

Adjunto imagen para dar más pistas.

WillyWeb
25/01/23, 11:37:59
Hola compañero. :D

Veamos si lo he entendido. :pensando:

Tienes dos perfiles que se disparan con eventos/estados que no mencionas (bloquer dispositivo, apagar pantalla, encender pantalla) y cada uno de ellos muestra una escena sobre la barra de notificaciones. Destruyes esas dos escenas al desbloquear el dispositivo y quieres reducir el ¿medio segundo? que tardan en desaparecer ... ¿es así?

Desbloqueando mi dispositivo con la patalla apagada el evento de "pantalla desbloqueda" gana al de "pantalla encendida" por unos pocos milisegundos (de 50 a 100), así que por ese lado ya estás usando el disparador más rápido, además de ser el que aparentemente te interesa.

Igual arañas unos pocos milisegundos uniendo ambas escenas para que solo sea necesario destruir una. En cualquier caso no creo que esto tenga un gran impacto y además puede estropear la funcionalidad que persigues.

Solo nos queda hacer que el móvil sea adivino, pero para eso necesito saber cómo y cuándo se disparan los perfiles que muestran esas dos escenas, para qué las usas, cuándo te interesa que se vean y cuándo no ... vamos, que me cuentes qué pretendes hacer para ver si se me ocurre esa "idea original" que andas buscando.

emiegna
25/01/23, 21:53:05
Exacto, es así. Quiero destruir ambas escenas (y otra que importa menos porque es transparente) al mismo tiempo que se desbloquea el móvil (imposible), o reducir al máximo el tiempo en el que se destruyen o bien una idea "original".

Entiendo que es un "capricho". Y no te olvides que simplemente soy un simple licenciado en Derecho. "Aficionadillo" desde hace ya unos 8 años a Tasker. Que también estudió empresariales (pero no lo terminé). Que las matemáticas las aprobé a trancas y barrancas, pero que soy muy duro de mollera para la programación, fórmulas, etc. Pero eso sí, investigo. Intento entender. Y aplicar posteriormente. Y algo muyyy malo... Perfeccionista ;)

Al lío...

Evento de desbloqueo de pantalla. Sin duda mejor.

¿Unir escenas con Acción de "Probar no se qué" y empleo de array (me suena algo)? ¿O una sola tarea para destruir todas las escenas?

En la tarea que destruye de momento todas las escenas he puesto en primer lugar las primeras que más me interesan que se destruyan rápidamente.

Ahí van los perfiles que imagino pueden ser relevantes quizás. Adjunto algunas capturas.

Este primer perfil contiene escenas que puedo destruir con la huella dactilar antes de que transcurra el tiempo de espera fijado de 10 segundos para "pasar" directamente y con antelación a la pantalla de bloqueo. Se antepone a las notificaciones en la pantalla de bloqueo con el mismo wallpaper de la pantalla de bloqueo y el título de la aplicación de la que me llega una notificación (con capa bloqueada se muestra la huella):

Perfil: Notif. Lockscr.
Evento: Notificación [ Aplicación Propietaria:DigiCal, Gmail, Mensajes, Outlook, Facebook, Facebook, Telegram, WhatsApp Título:* Texto:* Subtexto:* Mensajes:* Otro Texto:* Categoría:* Solo Nuevo:Apagado ]
Estado: Estado de Pantalla [ Está:Apagado ]
Estado: No Llamada [ Tipo:Cualquiera Número:* ]



Entrada Tarea: Notif. Lockscr.

A1: Si (if) [ %INTERRUPT ~ all ]

A2: Mostrar Escena [
Nombre: DigiCal
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.digibites.calendar ]

A3: Mostrar Escena [
Nombre: Gmail
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.google.android.gm ]

A4: Mostrar Escena [
Nombre: Mensajes
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.oneplus.mms ]

A5: Mostrar Escena [
Nombre: Outlook
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.microsoft.office.outlook ]

A6: Mostrar Escena [
Nombre: Facebook
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.facebook.katana ]

A7: Mostrar Escena [
Nombre: Messenger
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.facebook.orca ]

A8: Mostrar Escena [
Nombre: Telegram
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ org.telegram.messenger ]

A9: Mostrar Escena [
Nombre: WhatsApp
Mostrar Como: Capa Superpuesta, Bloqueada, Ventana Completa
Posición Horizontal: 100
Posición Vertical: 100
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]
Si (if) [ %evtprm1 ~ com.whatsapp ]

A10: Encender [
Tiempo de Bloqueo (Vea la Ayuda): 100 ]

A11: Esperar [
Milisegundos: 0
Segundos: 10
Minutos: 0
Horas: 0
Días: 0 ]

A12: Destruir Escena [
Nombre: DigiCal ]
Si (if) [ %evtprm1 ~ com.digibites.calendar ]

A13: Destruir Escena [
Nombre: Gmail ]
Si (if) [ %evtprm1 ~ com.google.android.gm ]

A14: Destruir Escena [
Nombre: Mensajes ]
Si (if) [ %evtprm1 ~ com.oneplus.mms ]

A15: Destruir Escena [
Nombre: Outlook ]
Si (if) [ %evtprm1 ~ com.microsoft.office.outlook ]

A16: Destruir Escena [
Nombre: Facebook ]
Si (if) [ %evtprm1 ~ com.facebook.katana ]

A17: Destruir Escena [
Nombre: Messenger ]
Si (if) [ %evtprm1 ~ com.facebook.orca ]

A18: Destruir Escena [
Nombre: Telegram ]
Si (if) [ %evtprm1 ~ org.telegram.messenger ]

A19: Destruir Escena [
Nombre: WhatsApp ]
Si (if) [ %evtprm1 ~ com.whatsapp ]

A20: Fin Si (end if)Con este segundo perfil se muestran las escenas "clicables" (una con un clic corto y la otra largo para mayor seguridad) "modo oscuro/claro" y "modo molestar activado/desactivado" (éste ultimo transparente abajo. Ambas escenas muestran durante un segundo un texto (escenas) con el cambio seleccionado. Y por último la escena de la temperatura exterior que contiene la variable %Temp (de %tact):

Perfil: Escenas Lockscreen On
Estado: Estado de Pantalla [ Está:Apagado ]



Entrada Tarea: Escenas Lockscreen

A1: Mostrar Escena [
Nombre: Icono Oscuro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 1 ]

A2: Mostrar Escena [
Nombre: Icono Claro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 0 ]

A3: Mostrar Escena [
Nombre: Modo No Molestar
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: 186
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

A4: Crear Escena [
Nombre: Temperatura ]

A5: Mostrar Escena [
Nombre: Temperatura
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 34
Posición Vertical: -120
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

A6: Establecer Variable [
Nombre: %Escenas
A: 1
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]Tercer perfil. Perfil de temperatura:

Perfil: Temperatura Tarea
Hora: De 00:00 cada 15m Hasta 23:59



Entrada Tarea: Temperatura Tarea

A1: Obtener Ubicación [
Fuente: Red
Tiempo Límite (Segundos): 100
Continuar Tarea Inmediatamente: Encendido ]

A2: Establecer Variable [
Nombre: %locn
A: %LOCN
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]

A3: Separar Variable [
Nombre: %locn
Separador: , ]

A4: HTTP Get (obtener) [
Servidor:Puerto: api.openweathermap.org
Ruta: data/2.5/forecast
Atributos: lat=%locn1
lon=%locn2
cnt=1
lang=es
units=metric
appid=5f06cf4d0dca9c4a8f2820bcca77c301
Tiempo Límite: 10 ]

A5: JavaScriptlet [
Código: json=global('HTTPD');
obj=JSON.parse(json);

var city=obj.city.name;
var lat=obj.city.coord.lat;
var lon=obj.city.coord.lon;
var country=obj.city.country;
var population=obj.city.population;

lm=obj.list[0].main;
var temp=lm.temp;

l0=obj.list[0];

var tact=Math.round(temp);
Salida Automática: Encendido
Tiempo Límite (Segundos): 45 ]

A6: Establecer Variable [
Nombre: %Temp
A: %tact
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]Cuarto perfil. Perfil para destruir escenas:

Perfil: Desblo. Destruir Escenas
Ajustes: Priority: 50 Enforce: no
Evento: Pantalla Desbloqueada



Entrada Tarea: Desblo. Destruir Escenas

A1: Destruir Escena [
Nombre: Temperatura ]

A2: Destruir Escena [
Nombre: Icono Oscuro ]

A3: Destruir Escena [
Nombre: Icono Claro ]

A4: Destruir Escena [
Nombre: Ventana Oscuro ]

A5: Destruir Escena [
Nombre: Ventana Claro ]

A6: Destruir Escena [
Nombre: Ventana No Molestar Activado ]

A7: Destruir Escena [
Nombre: Ventana No Molestar Desactivado ]

A8: Destruir Escena [
Nombre: Modo No Molestar ]

A9: Detener [
Tarea: Notif. Lockscr. ]

A10: Destruir Escena [
Nombre: DigiCal ]

A11: Destruir Escena [
Nombre: Facebook ]

A12: Destruir Escena [
Nombre: Gmail ]

A13: Destruir Escena [
Nombre: Mensajes ]

A14: Destruir Escena [
Nombre: Messenger ]

A15: Destruir Escena [
Nombre: Outlook ]

A16: Destruir Escena [
Nombre: Telegram ]

A17: Destruir Escena [
Nombre: WhatsApp ]

A18: Establecer Variable [
Nombre: %Escenas
A: 0
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]Como te comentaba, adjunto capturas de pantalla de bloqueo con escena en "Modo oscuro/claro" (circulo lleno o vacío). "Clicables". Capturas que muestran un texto durante 1 segundo al cambiar. Capturas de texto al hacer un clic largo abajo de la huella para "Modo no molestar activado/desactivado". Y captura del primer perfil acerca de las notificaciones sobre la pantalla de bloqueo.

Edito: Quede claro que el wallpaper de la pantalla de inicio y de las notificaciones están desenfocadas deliberadamente:)

WillyWeb
26/01/23, 13:08:38
Jodo :oh: menudo tocho que me has arreado.

Vamos a ver si lo he pillado todo...

El perfil "Notif. Lockscr." se dispara cuando llega una noficicación de alguna de las aplicaciones que te interesan, la pantalla está apagada y no estás en una llamada. Si además el modo No Molestar está desactivado se muestra una de las 8 escenas personalizadas por aplicación, enciendes la pantalla un instante, esperas diez segundos y destruyes la escena correspondiente de entre las 8.

Yo metería en el perfil la comprobación de la variable %INTERRUPT con lo que te ahorrarías el IF de la tarea y evitarías la posible activación del perfil para nada.

Esas escenas van a la misma posición en pantalla y, por las imágenes, parece que solo contienen el nombre de la aplicación. Eso se puede hacer con una sola escena y la acción "Texto del Elemento". Con eso reducirías el número de acciones y solo tendrías que destruir una escena.

El perfil "Escenas Lockscreen On" se activa al apagar la pantalla y muestra una escena diferente dependiendo de si está activado el modo oscuro o no, otra para activar/desactivar el modo no molestar y una más con la temperatura local.

Tres escenas para mostrar dos datos cuando lo podías hacer todo con una. Una escena más para gestionar el modo no molestar. Y luego he visto otras dos más para mostrar su estado.

¿Por qué creas la escena Temperatura y acto seguido la muestras? Con mostrar es suficiente para el uso que le estás dando.

Y una cosa más ¿para qué usas la variable %Escenas?

El perfil "Temperatura Tarea" se encarga de actualizar cada 15 minutos la variable %Temp, que debe ser la que usas en la escena correspondiente.

La tarea de ese perfil se ejecuta aunque la escena en la que se muestra la temperatura no esté visible. Eso se puede optimizar un poco para no desperdiciar recursos.

Y el perfil "Desblo. Destruir Escenas" que se dispara al desbloquear la pantalla y cuya tarea se encarga de destruir las 16 escenas que puedes llegar a tener en uso.

Si no me he confundido en las cuentas creo que esas 16 destrucciones se podrían quedar en 3 o 4.

No te garantizo que los cambios que te propongo reduzcan el tiempo que esas escenas "malditas" tardan en desaparecer, pero seguro que mejoran el redimiento y simplifican una barbaridad el mantenimiento de tu invento. Y puedes estar tranquilo que con derecho y un poco de empresariales te llega de sobra para esto... espero. ;-)

Yo empezaría por unificar todas las notificaciones en una sola escena. Comprueba el contenido del array %evtprm() para ver si en alguno de sus elementos aparece el nombre de la aplicación. Y mira si eres capaz de meter mano a la acción "Texto del Elemento".

emiegna
27/01/23, 19:30:17
Bien Willy. Está claro que en Tasker me paro poco a pensar antes de elaborar un proyecto o perfil. Todo es lógico y fácil.

Me dió por probar el perfil que destruía todas las escenas desactivando todas menos la de la temperatura. Tarda lo mismo en desaparecer. El número de escenas a destruir no afecta a la rapidez.

Tienes razón con la comprobación previa en el primer perfil con %INTERRUPT. Hecho.

De 16 escenas a destruir se quedan en 3 escenas a destruir. Las notificaciones en lockscreen pasan de 8 a 1. Ésto hecho. Funciona perfecto. Y de las escenas en lockscreen, de 8 pasan a 2. Arriba 1 y abajo 1. Estoy en ello.

Lo de crear la escena de la temperatura antes de mostrarla fue cuando creaba el perfil. Probando. Y en un principio pensaba que era necesario. Pero obviamente no es necesario.

El perfil "Temperatura Tarea" tiene sentido, como tú bien me has abierto los ojos (que tonto por mi parte), con un contexto de evento "Encender pantalla". No era necesario el anterior y se reduce el consumo de recursos.

La variable %Escena... Cuando pongo el móvil a cargar, durante un instante se muestra solo a pantalla completa una indicación de conexión de carga rápida. Desaparecen un instante los iconos de la barra de notificaciones, los acceso directos de abajo y la huella. Tenía que hacer que también desapareciesen temperatura e icono claro/oscuro. Se me ocurrió ésto y cumple:

Perfil: Cargador Variable
Estado: Energía (fuente) [ Fuente:Cualquiera ]



Entrada Tarea: Cargador Variable On

A1: Establecer Variable [
Nombre: %Cargador
A: 1
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]



Salida Tarea: Cargador Variable Off

A1: Establecer Variable [
Nombre: %Cargador
A: 0
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ] Perfil: Cargador Conex. Escenas
Evento: Variable Establecida [ Variable:%Cargador Valor:1 Solo Variables de Usario:Apagado ]



Entrada Tarea: Cargador Conex. Escenas

A1: Si (if) [ %Escenas ~ 1 ]

A2: Esperar [
Milisegundos: 200
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A3: Ocultar Escena [
Nombre: Temperatura
Animación: Ninguno ]

A4: Ocultar Escena [
Nombre: Icono Claro
Animación: Ninguno ]

A5: Ocultar Escena [
Nombre: Icono Oscuro
Animación: Ninguno ]

A6: Esperar [
Milisegundos: 500
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A7: Mostrar Escena [
Nombre: Temperatura
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 34
Posición Vertical: -120
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

A8: Mostrar Escena [
Nombre: Icono Claro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 0 ]

A9: Mostrar Escena [
Nombre: Icono Oscuro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 1 ]

A10: Fin Si (end if)Así que na... A seguir simplificando el tinglao y ya veré si existe solución (o no) para el asunto principal del tema, aunque ya lo veo bastante complicado.

WillyWeb
28/01/23, 10:48:46
Por lo que cuentas has reducido tu invento de forma muy considerable sin perder funcionalidad, y sin ayuda. :ok:

Me alegro de que todas las propuestas te pareciesen lógicas y las hayas podido poner en práctica. Algunos proyectos van creciendo y llega un momento en el que te tienes que parar a mirar si es posible optimizar el invento para hacer más fácil ese crecimiento y su posterior mantenimiento. Esa es la lección del día.

Si lo he entendido bien el perfil "Temperatura Tarea" ha pasado de ejecutarse cada 15 minutos a una única vez al encender la pantalla. Puedes combinar ambos contextos (tiempo y pantalla) de forma que el perfil se repita cada X minutos solo si la pantalla está encendida. Creo que eso te daría más juego.

Entiendo el invento de la pantalla de carga y las escenas. Tienes un perfil que asigna a %Cargador 1/0 al conectar/desconectar el cargador y otro perfil que reacciona al cambio de valor de %Cargador con una tarea que solo hace algo si %Escenas vale 1 ... ¿ves la semejanza con lo de la variable %INTERRUPT?

Antes de meter mano a eso aclarame algo ... usas la variable %Escenas para este invento en el que creas la variable %Cargador ... ¿usas esas dos variables para algo más?

emiegna
28/01/23, 12:28:43
Me di cuenta anoche justamente... Si sustituyo el contexto de hora en el perfil "Temperatura tarea" por el de evento encender pantalla y permanezco mucho tiempo con la pantalla encendida puede haber cambios de temperatura que no quedarán registrados en %Temp hasta que no apague la pantalla y la vuelva a encender. Tienes razón. Ya he incluido ambos: hora cada 15 min y encender pantalla.

Con lo del cargador, te refieres a la comprobación previa en el perfil "Cargador Conex. Escenas" metiendo la variable en el contexto, no? Y así me ahorro un if en la tarea. ¿Y que gano con ello además de evitar el if? Ambos perfiles han de funcionar (También el parfil "Cargador Variable". Por cierto, la variable solo tiene ese uso.

WillyWeb
28/01/23, 12:49:19
Eso es. Si pones el estado de pantalla encendida y el evento de tiempo cada x minutos la tarea actualizará la variable %Temp solo cuando tiene utilidad hacerlo.

Puesto que esa variables (%Escenas y %Cargador) solo las usas para gestionar tus escenas al conectar el cargador, céntrate solo en eso. Cambia la tarea que se dispara al conectar el cargador para que haga esto...


Comprueba si cada una de las escenas que te interesa ocultar/mostrar es visible usando la acción "Probar Escena".
Oculta las escenas que quieras. Puedes ocultar todas para no tener que hacer comprobaciones.
Espera el tiempo que te parezca oportuno.
Vuelve a mostrar cada escena que te interesa, pero solo si antes era visible.


Con eso te ahorras las variables, los IF y haces la tarea mucho más "inteligente".

=== EDITO ===

Hablando de eliminar variables. Ahora que ya tienes claro cómo se usa la acción "Texto del Elemento" ¿Te has planteado eliminar %Temp y usar esa acción? Te adelanto que hacerlo te ocasionará un problema. Piensa en ello y me cuentas. Vamos a ver si puedes añadir al curriculum "Conocimientos de programación" detrás de derecho y un poco de económicas. :sisi1:

emiegna
28/01/23, 16:06:54
Te aclaro. Si no respondo enseguida es porque no tengo ni idea de las dos últimas propuestas. Estoy estudiandolas. Pero hay que seguir un orden. Dame tiempo y ten paciencia ;)

(Otra vez de barbacoa encima...)

WillyWeb
28/01/23, 16:24:24
Tranquilo hombre, no tengas prisa, que afortunadamente no nos va la vida en ello. :D

Por cierto, poco frío tienes por tu tierra para andar de barbacoa (otra vez). Yo en cambio estoy en casa, malito, con un resfriado del carajo, aburrido, triste, sin ganas de moverme... y con el móvil en la mano esperando tus respuestas. Pero tú no tengas prisa. Disfruta de la barbacoa. :cry:

emiegna
28/01/23, 20:02:35
Vaya por Dios!! Hay que cuidarse, hombre. Vamos, que soy del sur y ando moviéndome entre dos provincias últimamente. Pero vamos, que aquí también hace fresquete y he vivido varios años en el norte. Me he tragao mucha nieve y resbalones de pardillo jajajaja...

Por orden... En el perfil del cargador tiene que ser un contexto de evento, te recuerdo. Porque es solo un momento. No quiero que desaparezcan las escenas mientras esté cargando. Sino solo en el momento que enchufo el cable. Es decir, no puede ser un estado.

(Sigo de barbacoa) ;)

WillyWeb
28/01/23, 20:20:38
En el perfil del cargador tiene que ser un contexto de evento, te recuerdo. Porque es solo un momento. No quiero que desaparezcan las escenas mientras esté cargando. Sino solo en el momento que enchufo el cable. Es decir, no puede ser un estado.

No te he propuesto que cambies el dispadarador, solo un par de detalles de la tarea que ya tienes funcionando.

emiegna
29/01/23, 14:03:10
En primer lugar, espero que te encuentres mejor hoy.

(Hoy no tengo barbacoa... de momento)

Veamos... El subconsciente trabaja mientras duermes. Partiendo de esa premisa, ya te digo que me levanté esta mañana con la cara colorá... Avergonzado. Santo Dios, que forma más tonta de complicarme la vida con relación al "pseudo-proyectito" del cargador. "Mare mía".

Perfil: Cargador Conex. Escenas
Estado: Energía (fuente) [ Fuente:Cualquiera ]



Entrada Tarea: Cargador Conex. Escenas

A1: Esperar [
Milisegundos: 200
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A2: Ocultar Escena [
Nombre: Temperatura
Animación: Ninguno ]

A3: Ocultar Escena [
Nombre: Icono Claro
Animación: Ninguno ]

A4: Ocultar Escena [
Nombre: Icono Oscuro
Animación: Ninguno ]

A5: Esperar [
Milisegundos: 800
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A6: Mostrar Escena [
Nombre: Temperatura
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 34
Posición Vertical: -120
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

A7: Mostrar Escena [
Nombre: Icono Claro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 0 ]

A8: Mostrar Escena [
Nombre: Icono Oscuro
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido
Continuar Tarea Tras Error:Encendido ]
Si (if) [ %Oscuro ~ 1 ]

Ya no existen las variables %Escenas y %Cargador, puesto que solo las usaba para ésto (tontamente).

Con relación a la segunda cuestión llevo gran parte de la mañana intentando interpretar, entender, lo que me propones con relación a la variable %Temp.

No sé si te refieres a que prescinda de ella tanto en la tarea del perfil "Temperatura Tarea" como en el texto de la escena. O solo en la escena o ni idea. Y que no prescinda de %tact, eso sí... O bien también de esta última y vaya más atrás. Es decir, a %HTTPD. La estoy liando parda, no? :)

WillyWeb
29/01/23, 16:17:04
Lo primero es agradecer a jorge_kai, el admin de HTCMania, el tiempo que se ha tomado en restaurar la funcionalidad de la etiqueta CODE. Mientras unos estaban de barbacoa otros estábamos trabajando. ;-)

Y una vez lanzada mi pullita vamos al tema. :risitas:

El "proyectito" del cargador va teniendo mejor pinta pero me ha sorprendido ver que todavía tienes separadas las escenas para los dos iconos y la temperatura. Pensaba que todo eso lo habías unido en una sola escena.

Veo que no has hecho la primera cosas que te sugerí, me refiero a lo de comprobar si una determinada escena es visible para luego restaurarla solo si procede, aunque viendo cómo funciona tu invento seguramente no lo necesitas.

Y mi comentario sobre %Temp iba en el sentido de dejar de usarla. La idea es que metas el valor directamente en la escena, exactamente igual que se supone que has hecho para las notificaciones o los avisos de la parte inferior de la pantalla. Hacerlo tiene más pegas que ventajas. Dale una vuelta y me cuentas.

WillyWeb
29/01/23, 16:21:12
AYUDAAAA COMO SE ROOTEA letab922 Y NO ENCUENTRO EL TWRP

Si esperas que con esos modales te ayude alguien lo llevas claro. :oh:

https://www.htcmania.com/search.php?searchid=69401411

emiegna
29/01/23, 16:53:39
:oskitar:

(... surrealista lo ocurrido... )

jorge_kai
29/01/23, 16:56:01
:oskitar:

(... surrealista lo ocurrido... )

está arreglado, seguimos :ok:

emiegna
30/01/23, 11:18:51
Por supuesto. Me uno para agradecer el trabajo de jorge_kai. Y pa la próxima barbacoa estáis invitados. O bien os guardo unos choricitos, costillitas, secreto ibérico, sardinas, caballas. Como veáis ;)

Segundo... Que presión!!! (es broma). Andaba liado y solo hice las escenas de las notificaciones y las escenas de abajo en la pantalla de bloqueo. Pero aún no había hecho unir todo lo de la barra de notificaciones (temperatura, icono oscuro e icono claro) en una unica escena. Ya está hecho. Funciona muy bien y ha quedado mu mono ;) Es más, creo que al desbloquear se destruye más rápido al tratarse de una escena arriba, otra abajo... y estoy pensando que sería mejor meterle un If a la destrucción de la única escena de las notificaciones. ¿Araño algo más de rapidez, crees tú, con un If? ¿O bien Tasker empleará el mismo tiempo en destruirla aunque no esté creada/mostrada que comprobar un If? (Arañando, arañando, se puede llegar muy lejos).

Por cierto, y antes que lo olvide, anduve mirando algún posible "truco" en su día para que temperatura e iconos oscuro/claro "desapareciesen" al mismo tiempo del desbloqueo. Pensé en (a pesar de quedar muy feo) lanzar una escena a pantalla completa del mismo wallpaper o una pantalla en negro un instante muy pequeño, por si la acción de mostrar escena era más rápida que la acción de destruir. Pero nada. Es obvio que antes, siempre, siempre, se produce el desbloqueo y posteriormente lo que sea. Nunca al mismo tiempo y ni tan siquiera prácticamente al mismo tiempo.

El "proyectito" del cargador ya queda así. Simplificado y funcionando correctamente:

Perfil: Cargador Conex. Escenas
Estado: Energía (fuente) [ Fuente:Cualquiera ]



Entrada Tarea: Cargador Conex. Escenas

A1: Esperar [
Milisegundos: 200
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A2: Ocultar Escena [
Nombre: Escenas Lockscr. Sup.
Animación: Ninguno ]

A3: Esperar [
Milisegundos: 800
Segundos: 1
Minutos: 0
Horas: 0
Días: 0 ]

A4: Mostrar Escena [
Nombre: Escenas Lockscr. Sup.
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

Y el perfil de desbloqueo que destruia las escenas ha quedado bastante reducido ahora:

Perfil: Desblo. Destruir Escenas
Ajustes: Priority: 50 Enforce: no
Evento: Pantalla Desbloqueada



Entrada Tarea: Desblo. Destruir Escenas

A1: Detener [
Tarea: Notif. Lockscr. ]

A2: Destruir Escena [
Nombre: Notif. Lockscr. ]

A3: Destruir Escena [
Nombre: Escenas Lockscr. Sup. ]

A4: Destruir Escena [
Nombre: Escenas Lockscr. Inf. ]

Nota: He cambiado el orden luego. Primero se destruye Escenas Lockscr. Sup.

Déjame estudiar la acción "Texto del elemento", pues no la entiendo. No lo pillo, vamos. Finalmente no pude hacer uso de ella en el perfil de las notificaciones porque el rectángulo del texto (la aplicación que notifica) cambia de color cuando estoy en modo claro u oscuro. Así que lo tengo con la acción de "Visibilidad". Una sola escena con el rectangulo sobre la que varía solo el texto.

WillyWeb
30/01/23, 13:30:11
Dudo que "arañes" mucho tiempo con ese IF que comentas, pero poco pierdes por probar. Y yo también le he dado vueltas a la forma de anticiparme al evento de desbloqueo, pero no llego a nada. :nusenuse:

Los dos últimos perfiles que has puesto tienen mucha mejor pinta que al principio. Más reducidos, más limpios y seguro que ahora son más rápidos. :ok:

Y sobre la acción "Texto del elemento"...

La idea es crear una escena, exactamente igual que las que estabas usando para la notificación de cada aplicación, pero dejando en blanco el elemento de texto en el que ponías el nombre de la aplicación. Cuando llegue una notificación muestras esa escena y en ese elemento de texto "inyectas" lo que quieras con la acción "Texto de Elemento". También tienes acciones para cambiar el color de texto y el del fondo.

emiegna
30/01/23, 15:36:21
Me interesa la acción "Elemento del texto". Iré practicando con ella, aunque sea de momento con tareas sencillas. Parece interesante.

Y es cierto, no le saco partido a todas las acciones posibles que existen con las escenas. Hace años sí que lo hacía. Ahora estaba yendo a lo más básico y sin simplificar.

Lo que también descarto (no sé si se me escapa algo) es que en una escena un texto que lo "recuadre" con un color semitransparente sea igual cuando el sistema esté en modo oscuro o claro. Cambia el color (Ya sé soluciones como la acción cambio de color que me recuerdas). Al igual que lograr color negro para las letras sobre fondo blanco. No lo consigo.

Seguiré practicando. Lo que está claro es que las tareas van ahora más rápido y se nota mayor rapidez en la destrucción de las escenas.

¿Qué ves que hagamos con el tema, Willy? ¿Lo dejamos como solucionado? ¿Lo dejamos abierto?

WillyWeb
30/01/23, 19:43:27
El tema está solucionado cuando tú digas, pero antes te doy alguna pista más para que esa escena de las notificaciones se adapte al tema claro/oscuro.

Parto de que la escena de las notificaciones es como la que se puede ver en la última imagen que has puesto en el mensaje #3 (https://www.htcmania.com/showpost.php?p=34105584&postcount=3). Esa escena tiene una especie de marco translucido, yo diría que oscuro, y las letras en blanco. Parece que en esas capturas tienes activado el tema oscuro (%Oscuro=1) y supongo que cuando el tema es claro (%Oscuro=0) quieres usar otros colores que se vean mejor sobre el fondo ¿voy bien?

Si defines estas dos variables con los colores de texto y recuadro que quieres usar cuando %Oscuro=0 ...

colortexto(0)=
colormarco(0)=

Y estas otras dos para cuando %Oscuro=1 ...

colortexto(1)=
colormarco(1)=

A la hora de asignar los colores solo tienes que hacer esto...

Color de Texto del Elemento [ Elemento: (el texto) Color: colortexto(%Oscuro) ]
Color de Fondo del Elemento [ Elemento: (el recuadro) Color: colormarco(%Oscuro) ]

Y naturalmente tendrás que "inyectar" el texto correspondiente con la acción "Elemento de Texto".

¿Entiendes el invento? :pensando:

emiegna
30/01/23, 21:22:16
Pues Willy, lo siento. No entiendo absolutamente nada.

¿Tendría que crear unas variables locales para la tarea de las notificaciones para cambiar el color de (por ejemplo) el texto si %Oscuro es 0 ó 1? Para eso un simple If, ¿No?

Pero vamos, que de todas formas no he entendido tu explicación. Aunque se que vas por el camino que simplifica la tarea. Eso sí creo verlo.

WillyWeb
31/01/23, 08:13:36
Perdona. He supuesto que te manejabas con los arrays y que entenderías lo que te he propuesto.

Creo que si te pasas por el tutorial de matrices y lees los tres primeros puntos la cosa te quedará mucho más clara...


https://www.htcmania.com/showthread.php?p=9409867
¿Qué es una matriz?
Haciendo referencia a las matrices
Cómo se crean las matrices


La gracia de lo que te propongo es que no necesitas IF y se reduce el número de acciones, pero si te sientes más cómodo usando IF, pues adelante. Lo importante es que entiendas lo que estás haciendo para poder modificarlo a tu gusto.

emiegna
31/01/23, 10:42:16
Los primeros resultados que encontré buscando información me llevaban a las matrices, es cierto. Y efectivamente nunca las he manejado.

Me meto en ellas. A ver si lo pillo y te cuento.

Por cierto, creo que voy a hacer un cambio más adelante. Pero sin importancia. Sólo por estética. Creo que el icono de oscuro/claro quedará mejor enmedio de los dos acceso directos de abajo. Bajo la huella dactilar. Pero antes miraré el tema de las matrices.

Y otra cosa por no abrir otro tema (que lo abro si es lo más propio). Es desviarse mucho del tema, la verdad. Pero imagino la respuesta (bien rápida). No es posible llevar información de Tasker a la pantalla ambiente, ¿No? He buscado, pero creo que no. Es decir, tanto en la pantalla ambiente como en la pantalla de bloqueo en los ajustes del sistema puedes añadir una frase tipo "Buenos días, colega", por ejemplo. Tú sabes.

WillyWeb
31/01/23, 11:54:09
No es posible llevar información de Tasker a la pantalla ambiente, ¿No?

De forma directa seguramente no se puede, aunque supongo que siempre te puedes fabricar tu prapia pantalla ambiente y poner en ella lo que quieras.

emiegna
31/01/23, 14:19:25
Estaba prácticamente claro. Aunque ya me atrae la idea de ese nuevo proyecto. Una pantalla ambiente "personal". Pero de momento tendría que averiguar la forma más ahorrativa de consumo (pantalla encendida siempre, o pulsar sobre pantalla apagada, etc). Y lo peor, que seguro daría con ello... Los iconos de las notificaciones que vayan surgiendo y vayan posicionándose. La idea parte de incluir la temperatura actual en una pantalla ambiente que esté siempre encendida, o se encienda con un solo toque teniendo la pantalla apagada o un movimiento significativo como levantar el móvil. Pero ese es otro proyecto...

Así que vamos por orden. Ah, y otra vez, gracias Willy por todo. Sigo con "mis" matrices y practicando. Tendrás noticias mías.

emiegna
01/02/23, 11:13:07
Me he quedado estancado...

Tengo esta tarea para ir aprendiendo matrices.

Entrada Tarea: Prueba

A1: Establecer Variable [
Nombre: %Prueba
A: 1.2
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]

A2: Separar Variable [
Nombre: %Prueba
Separador: . ]

A3: Flash [
Texto: %Prueba
Largo: Encendido
Continuar Tarea Inmediatamente: Encendido
Descartar al Hacer Clic: Encendido ]

Y obtengo una variable %Prueba cuyo valor es 1.2. Esta es ahora la matriz tras ejecutar la tarea. Además, tras ejecutar la tarea obtengo dos variables "hijos". %Prueba1, con valor 1 y %Prueba2 con valor 2.

He estado revisando también los casos de %Prueba(), %Prueba(#), etc... pero no tengo ni puñetera idea de como obtener colores distintos para pongamos por ejemplo el fondo del texto si estamos en %Oscuro 1 o %Oscuro 0. En tu ejemplo no veo ni la obtención de los colores, ni si la variable %Oscuro tiene valor 0 ó 1. Solo pones %Oscuro.

Está claro que debe faltarme aún muchísima más formación y entendimiento.

WillyWeb
01/02/23, 14:06:36
El tutorial que estás siguiendo tiene unos años y ya no hace falta ese invento de "Separar Variable". Mira la acción "Establecer Array". Y obviamente también puedes asignar valores directamente.

Supongamos que tienes estos dos elementos en el array %color ...

%color0=FF0000FF <--- código del color azul
%color1=FFFF0000 <--- código del color rojo

Por si no te has dado cuenta %color1 y %color(1) son dos formas de hacer referencia a la misma variable.

Si %Oscuro=1 y haces un Flash %color(%Oscuro) estás haciendo un Flash %color(1) que te mostrará FFFF0000 (el código del color rojo). Esa es la forma en la que %Oscuro (con valor 0 ó 1) se termina convirtiendo en un color.

emiegna
02/02/23, 00:17:14
Willy... Te juro que le he dado mil vueltas ya a todo lo que me has dicho y todo lo que he ido encontrando. Me duele literalmente la cabeza.

Practicando tras intentar entender una y otra vez. Y descubriendo que no he entendido... una y otra vez. No doy con ello. Llevo empleado ya mucho tiempo para dar con ello y me avergüenza no poder entenderlo.

Veo que tú, mlesir, Caravantes, etc trabajáis con matrices y arrays como si se tratasen de cálculos matemáticos de niños de 6 años.

Soy muy torpe, Willy. Creo que sería mejor dejarlo. No doy para más, sólo para lo básico.

WillyWeb
02/02/23, 08:27:27
Vamos hombre, que no es para tanto. ;-)

Puedes guardar lo que quieras en una variable y decides gurdar un código de color. Digamos que has usado las variables %color0 y %color1. Ahora quieres usar cada una de esas variables dependiendo del valor de una tercera. Digamos que %Oscuro, que puede valer 0 ó 1. Puedes hacerlo con un IF o usar el "truco" de componer el nombre de la variable que te interesa combinando "%color" y el número que contiene la variable %Oscuro. La cosa sería algo así como decir %color%Oscuro ... que cuando Tasker sustuya el valor de %Oscuro resultaría en %color0 ó %color1.

Otra forma de ver el funcionamiento de los arrays...

%nombre1=pepe
%nombre2=juan
%nombre3=luis
...
%nombre9=romualdo

Supongamos que quieres recorrer esa lista de nombres para ir haciendo un Flash de cada uno. Haces un bucle del tipo %ind=1:9 y usas la variable %ind como índice de cada elemento del array ... Flash %nombre(%ind). Haz esta prueba y lo entenderás a la primera.

emiegna
03/02/23, 00:30:13
Willy, paramos cuando tú quieras. Que lo entendería perfectisimamente. Ya es demasiado. Tratar esto conmigo (y probablemente otras cuestiones) puede estar resultando muy pesado. Y ya si eso seguiría yo sólo intentando entenderlo.

Duro de mollera, no... lo siguiente.

Tengo dos tareas.

La primera la entiendo (o mejor dicho, honestamente creo entenderla) y funciona correctamente. Pero aquí no hago uso de la acción "Establece Array".

Entrada Tarea: Prueba

A1: Crear Escena [
Nombre: Escenas Lockscr. Sup. ]

A2: Establecer Variable [
Nombre: %color0
A: FF0000FF
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]

A3: Establecer Variable [
Nombre: %color1
A: FFFF0000
Dígitos de Redondeo Máximos: 3
Salida Estructurada (JSON, etc.): Encendido ]

A4: Color de Texto del Elemento [
Nombre de Escena: Escenas Lockscr. Sup.
Elemento: Temperatura
Color: %color(%Oscuro) ]

A5: Mostrar Escena [
Nombre: Escenas Lockscr. Sup.
Mostrar Como: Capa Superpuesta, Bloqueada
Posición Horizontal: 100
Posición Vertical: -138
Animación: Sistema
Mostrar Sobre Bloqueo de Pantalla: Encendido
Continuar Tarea Inmediatamente: Encendido
Permitir Límites Externo: Encendido
Bloqueo de Superposición +: Encendido
Superposición +: Encendido ]

Al cambiar de oscuro a claro (%Oscuro 0 ó 1) el texto de la temperatura (7°, o lo que sea) cambia de color. De rojo a azul, o viceversa.

La segunda tarea nada. Pero nada. Dos acciones. La segunda acción el flash %color(%Oscuro). He de usar la acción "Establece array" y me olvido de la acción "Establecer variable" (que imagino aquí no pintan nada). Esta es la primera acción.

En esta acción, en "Matriz de Variables (array)" pienso que debería poner %color. Y ya está. Y en "Valores" he probado de todo. Con comas, con puntos, con separador con un punto, o con una coma, los códigos de colores, %color0 y %color1, en los separadores añadir los códigos de colores... Vamos, mil vueltas. Y el flash no respondía correctamente al cambio de oscuro a claro, o viceversa.

WillyWeb
03/02/23, 07:54:13
Si la tarea de la temperatura ya te funciona y entiendes, aunque sea por lo pelos, su funcionamiento el tema está resuelto. Olvida la otra tarea, que se trataba solo de un ejemplo para que vieses el funcionamiento de los array.

Ya has visto que no necesitas IF, ni dos escenas, ni nada de nada para ajustar tu invento al tema claro/oscuro.

Te espero en la próxima. :cucu:

emiegna
03/02/23, 13:46:29
Muchas gracias, Willy. Por tu ayuda y paciencia.

Nos veremos otra vez :adios: