Basándome en la sugerencia de Izzy, esto es lo que se me ha ocurrido:
Perfil: Alternar filtro de pantalla
Contexto primario: Conjunto de variables %LIGHT
Contexto secundario: No en Netflix, Seguro en la Nube, etc.
Tarea:
1. Perform Task `Distance` Priority 8 Parameter 1 %LIGHT Parameter 2 %OLDLIGHT Return Value Variable %lightchange
2. If %lightchange > %LightThreshold
3. If %ScreenFilterOn = 1
4. Perform Task `Screen Filter Off` Priority 8
5. Else
6. Perform Task `Screen Filter On` Priority 8 If %LIGHT = 0
7. End If
8. End If
9. Variable Set %OLDLIGHT To %LIGHT
Tarea Distance
:
1. Variable Set Name %rval To %par1 - %par2 Do Maths True If %par1 > %par2
2. Variable Set Name %rval To %par2 - %par1 Do Maths True If %par2 > %par1
3. Variable Set Name %rval To 0 If %par1 = %par2
4. Return Value %rval
Tarea Screen Filter On
:
1. Screen Filter 48.6% Soft-keys On
2. Variable Set Name %ScreenFilterOn To 1
Tarea Screen Filter Off
:
1. Screen Filter 100% Soft-keys On
2. Variable Set Name %ScreenFilterOn To 0
Tuve que jugar un poco con el valor de %LightThreshold. Empecé con un valor de 30, pero resultó ser tan alto que el filtro de pantalla nunca se activó. Con el valor de 10, las cosas parecen estar funcionando bien por ahora. Voy a informar de nuevo en un par de días.
0 votos
¿Podría un
WAIT
al final de esa tarea mejorar la situación? Podrías retrasar la finalización de la tarea durante, digamos, 30s. Otra idea sería establecer una variable de usuario (por ejemplo%LIGHT_FILTER
) a1
cuando se active el filtro (no olvide eliminarlo en la tarea de salida), y añada una tareaIF
con algo que define cuando el filtro está activado no debe disparar de nuevo a menos que%LIGHT
supera un umbral determinado (por ejemplo, sólo se activa cuando es al menos3
puede que tengas que jugar con ese valor).