PDA

Ver la Versión Completa : [ CONSULTA ] Oscurecer pantalla tras un tiempo de inactividad


xerjio
28/01/18, 18:07:45
¿Alguien sabe como crear un perfil que haga que se baje el brillo automáticamente tras un tiempo sin tocar la pantalla y poder reactivar el brillo original tocando la pantalla?
Es un perfil muy necesario para ahorrar batería en situaciones que se necesita tener la pantalla activa todo el rato ya que Android apaga la pantalla totalmente al concluir el tiempo de suspensión o bloqueo automático y es necesario reactivarlo.
Gracias.

sOcIo_co
28/01/18, 19:03:47
Con tasker puedes hacer eso

Enviado desde mi Redmi Note 4 mediante Tapatalk

WillyWeb
29/01/18, 15:00:33
¿Alguien sabe como crear un perfil que haga que se baje el brillo automáticamente tras un tiempo sin tocar la pantalla y poder reactivar el brillo original tocando la pantalla?

No parece complicado... :rolleyes:

-Un perfil que detecte el encendido y apagado de la pantalla
-Una tarea asociada que haga una espera del tiempo que quieras
-Una escena sobre la que puedas pulsar
-Variables y acciones para guardar/recuperar el valor del brillo
-Cinco minutos de tu tiempo (más lo que tardes en leer el manual de Tasker) :silbando:

Puedes empezar por aquí...

http://www.htcmania.com/showthread.php?t=614108

Suerte :cucu:

Caravantes
29/01/18, 15:20:00
¿Alguien sabe como crear un perfil que haga que se baje el brillo automáticamente tras un tiempo sin tocar la pantalla y poder reactivar el brillo original tocando la pantalla?

Es un perfil muy necesario para ahorrar batería en situaciones que se necesita tener la pantalla activa todo el rato ya que Android apaga la pantalla totalmente al concluir el tiempo de suspensión o bloqueo automático y es necesario reactivarlo.


No estoy seguro de entender lo que necesitas.
A) En el primer párrafo parece que quieres un perfil que cambie el brillo de pantalla según haya pasado mucho/poco tiempo desde que se tocó la pantalla por última vez.
B) En el segundo párrafo parece que quieres un perfil que mantenga la pantalla siempre encendida porque Android la apaga tras un tiempo de inactividad.
Puede que necesites las dos cosas (A y B) pero supongo que habría que plantearlo como dos problemas independientes, y tratar de solucionarlo con perfiles distintos.

WillyWeb
29/01/18, 18:31:17
No estoy seguro de entender lo que necesitas...

Yo entiendo que quiere mantener la pantalla encendida permanentemente. Pasado un tiempo X sin tocar la pantalla que baje el brillo. Y que al tocar la pantalla de nuevo se recupere el brillo normal.

Ahora que lo pienso ... ya no me parece tan sencillo. :rolleyes:

Rsc
29/01/18, 23:08:32
-Una escena sobre la que puedas pulsar

Se puede?

WillyWeb
30/01/18, 21:16:11
Se puede?

¿Hacer una escena sobre la que se pueda pulsar?

:loco:

Rsc
31/01/18, 17:49:06
Creo que lo he entendido mal, pensaba que te referías a hacer una escena con un porcentaje de transparencia, y poder pulsar sobre los elementos que se encuentran bajo la misma.

danko9696
31/01/18, 20:49:02
No es más que cambiar el timeout de android para la pantalla según la app. Si es la app X pones varias horas, si es la app Z pones 30 segundos.

xerjio
31/01/18, 22:13:16
Gracias por las respuestas, pero creo que no es sencillo. Lo primero es que no encuentro la forma de establecer una escena que reaccione al tocar la pantalla. Esto sería para recuperar el brillo original. Básicamente lo que necesito es que el brillo se baje tras un tiempo de inactividad y que se recupere al tocar la pantalla.

Rsc
31/01/18, 22:40:14
Básicamente lo que necesito es que el brillo se baje tras un tiempo de inactividad y que se recupere al tocar la pantalla.

Creo que es mejor que expliques con más detalle que es lo que quieres. Mientras transcurre ese tiempo de inactividad, tienes alguna aplicación abierta?

En todo caso, para calcular el tiempo de inactividad, creo que podrías usar la variable incorporada %WIN.

Puedes hacer un perfil, que cada X tiempo guarde la variable %WIN en un array, y luego comprobar si los arrays guardados son iguales. Eso significaría que llevas X tiempo con la misma ventana en la pantalla del teléfono.

Una vez transcurrido el tiempo de inactividad que necesites, con una acción de Tasker, puedes bajar el brillo de pantalla y luego mostrar una escena con un elemento transparente que ocupe toda la pantalla, que al pulsar sobre el, oculte la escena y vuelva a aumentar el brillo.

Primero te he preguntado si el tiempo de inactividad, transcurre con una aplicación abierta, porque sería ideal, poder pedirle a Tasker, que obtenga el valor de %WIN, únicamente cuando esa la app abierta.

danko9696
31/01/18, 22:41:04
Gracias por las respuestas, pero creo que no es sencillo. Lo primero es que no encuentro la forma de establecer una escena que reaccione al tocar la pantalla. Esto sería para recuperar el brillo original. Básicamente lo que necesito es que el brillo se baje tras un tiempo de inactividad y que se recupere al tocar la pantalla.
Yo creo que sí es bastante sencillo. Es justo lo que hacen las opciones de dispositivo de android en display/pantalla. Con Tasker puedes alterar ese tiempo que pasa desde que no se toca la pantalla hasta que se baja el brillo y luego se apaga. No hace falta nada complejo como escenas o cosas raras, es una opción básica de android que me parece ni necesita root al tocarla con Tasker.

xerjio
31/01/18, 22:56:36
Creo que es mejor que expliques con más detalle que es lo que quieres. Mientras transcurre ese tiempo de inactividad, tienes alguna aplicación abierta?

No necesito que haya expresamente ninguna aplicación abierta, solo que actúe en cualquier estado en que se encuentre el teléfono.

xerjio
31/01/18, 23:11:25
Yo creo que sí es bastante sencillo. Es justo lo que hacen las opciones de dispositivo de android en display/pantalla. Con Tasker puedes alterar ese tiempo que pasa desde que no se toca la pantalla hasta que se baja el brillo y luego se apaga. No hace falta nada complejo como escenas o cosas raras, es una opción básica de android que me parece ni necesita root al tocarla con Tasker.

Exactamente, en la configuración de android puedes poner el tiempo de suspensión de la pantalla y justo cuando va a entrar en suspensión esta se oscurece durante 2 o 3 segundos hasta apagarse completamente. Me gustaría aumentar este tiempo en que la pantalla está oscurecida. ¿Se puede cambiar esto con Tasker?

danko9696
31/01/18, 23:18:37
Exactamente, en la configuración de android puedes poner el tiempo de suspensión de la pantalla y justo cuando va a entrar en suspensión esta se oscurece durante 2 o 3 segundos hasta apagarse completamente. Me gustaría aumentar este tiempo en que la pantalla está oscurecida. ¿Se puede cambiar esto con Tasker?
No el tiempo que está oscurecida pero sí el tiempo desde que no se toca la pantalla hasta que se oscurece para poco después apagarse. Pongamos que lo quieres usar con un lector de libros, ya que puedes estar un buen rato sin tocar la pantalla. Pones que ese tiempo sea de 1h por ejemplo y en la tarea de salida que sean 30 segundos.

_primax
09/02/18, 09:02:32
Gracias por las respuestas, pero creo que no es sencillo. Lo primero es que no encuentro la forma de establecer una escena que reaccione al tocar la pantalla. Esto sería para recuperar el brillo original. Básicamente lo que necesito es que el brillo se baje tras un tiempo de inactividad y que se recupere al tocar la pantalla.

Buenos días xerjio

Me ha parecido muy interesante tu propuesta, por lo que he estado investigando un poco y creo que sí que se puede hacer lo que quieres.

Hay una opción para saber si se ha tocado la pantalla utilizando el Shell y el comando getevent, aunque hay que ser Root para ello. Una vez que se tiene este dato se puede programar para que lance la actividad que queremos (en este caso bajar el brillo) pasado un tiempo determinado.

A ver si tengo un hueco este fin de semana y me pongo con los perfiles y os los paso por aquí.

Salu2...

danko9696
09/02/18, 10:19:19
Buenos días @xerjio (http://www.htcmania.com/member.php?u=902590)

Me ha parecido muy interesante tu propuesta, por lo que he estado investigando un poco y creo que sí que se puede hacer lo que quieres.

Hay una opción para saber si se ha tocado la pantalla utilizando el Shell y el comando getevent, aunque hay que ser Root para ello. Una vez que se tiene este dato se puede programar para que lance la actividad que queremos (en este caso bajar el brillo) pasado un tiempo determinado.

A ver si tengo un hueco este fin de semana y me pongo con los perfiles y os los paso por aquí.

Salu2...
Aunque eso se pueda hacer, apostaría a que va a ser muy costoso para la batería que cada vez que toques la pantalla se lance una tarea de tasker. Es más eficiente simplemente cambiar la duración del tiempo de espera de pantalla encendida de android. Aunque por otro lado sí resultaría interesante saber como se puede hacer, porque me imagino que puede tener más usos aparte de para detectar pulsaciones.

GraphicAdventure
09/02/18, 21:54:56
Xerjio, ¿probaste la acción UI de AutoInput?
Creo que hace exactamente eso.
Lo que dijo Primax sobre getevent también funciona.
Apostaría que AutoInput usa getevent, nada más. No veo otra forma de obtener esos datos.

código getevent (https://android.googlesource.com/platform/system/core.git/+/android-4.2.2_r1/toolbox/getevent.c)

Mirando el código se pueden ver los argumentos válidos:

Usage: %s [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]

-t: show time stamps
-n: don't print newlines
-s: print switch states for given bits
-S: print all switch states
-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)
-d: show HID descriptor, if available
-p: show possible events (errs, dev, name, pos. events)
-i: show all device info and possible events
-l: label event types and names in plain text
-q: quiet (clear verbosity mask)
-c: print given number of events then exit
-r: print rate events are received


¿No tienes brillo automático?
Esta función no gasta batería.
En una situación de mucha luminosidad obviamente el brillo es mayor y gasta más pero personalmente prefiero ahorrar en la vista y en unas gafas que en la batería.

_primax
12/02/18, 00:08:19
Aunque eso se pueda hacer, apostaría a que va a ser muy costoso para la batería que cada vez que toques la pantalla se lance una tarea de tasker. Es más eficiente simplemente cambiar la duración del tiempo de espera de pantalla encendida de android. Aunque por otro lado sí resultaría interesante saber como se puede hacer, porque me imagino que puede tener más usos aparte de para detectar pulsaciones.

Pero eso no es lo que se pretende. En cuanto a uso de batería, no creo que tenga mucho gasto, lo único que hace la tarea es una suma de variables.

Mañana cuelgo los perfiles y las tareas, que hoy ya no me da tiempo.

Salu2...

_primax
13/02/18, 17:41:01
Hola a todos,

Os dejo el proyecto como había prometido.

Salu2...

Tenemos tres perfiles:

Estado Pantalla. Este perfil activa el seguimiento cuando la pantalla está encendida y lo desactiva todo y restaura el brillo a su nivel previo cuando está apagada.

Perfil: Estado Pantalla (279)
Estado: Estado Pantalla [ Está:Si ]
Entrada: Activar Seguimiento (280)
Salida: Desactivar Seguimiento (281)


Captura Pulsacion. Este perfil es el que detecta una pulsación en la pantalla. Si tiene lugar la pulsación recalcula el valor de la variable %Ejecutar_tarea y vuelve a lanzar el comando para hacer el seguimiento de las pulsaciones. Cada vez que tocamos la pantalla el comando getevent escribe en la variable %Evento, por lo que cuando esta variable guarda un valor dispara nuestro perfil.

Perfil: Captura Pulsacion (271)
Evento: Establecer variable Variable:%Evento
Entrada: GetEvent (269)


Cambia brillo. Este perfil es el que se ocupa de guardar los valores actuales de brillo y los modifica según nuestras preferencias. Se activa a la hora previamente fijada desde la tarea GetEvent y siempre que no tengamos la pantalla previamente oscurecida (mediante la variable %Cambio_brillo_activo controlamos el estado).

Perfil: Cambia Brillo (275)
Hora: Desde %Ejecutar_tarea Hasta %Ejecutar_tarea
Estado: Valor de variable [ %Cambio_brillo_activo ig 0 ]
Entrada: Cambiar Brillo (276)


En cuanto a las tareas, utilizamos cinco de ellas:

La primera que usamos es Activar Seguimiento. Lo que hace es encender los otros dos perfiles cuando se enciende la pantalla del teléfono y arranca el seguimiento lanzando la tarea GetEvent.

Activar Seguimiento (280)
A1: Estado del perfil [ Nombre:Captura Pulsacion Establecer:Encendido ]
A2: Estado del perfil [ Nombre:Cambia Brillo Establecer:Encendido ]
A3: Realizar tarea [ Nombre:GetEvent Prioridad:%priority+1]


A la tarea GetEvent llegamos siempre que toquemos la pantalla. En ese momento, si ya hemos cambiado el brillo y la pantalla está oscurecida la restaura a su estado inicial, luego coge el tiempo actual y le suma 120 segundos (con esto estamos programando el inicio de la tarea para cambiar el brillo, por lo que si no tocamos la pantalla otra vez se oscurecerá pasado un tiempo entre 1 min 1 seg y 2 minutos) y, por último, lanza de nuevo el comando para seguir controlando los toques en la pantalla.

GetEvent (269)
A1: Si (if) [ %Cambio_brillo_activo ig 1 ]
A2: Realizar tarea [ Nombre:Restaurar Brillo Prioridad:%priority+1 ]
A3: Fin si (End if)
A4: Establecer variable [ Nombre:%Ejecutar_tarea A:%TIMES+120
Calcular:Encendido ]
A5: Ejecutar consola [ Comando:getevent -c 1 /dev/input/event0
Cuenta atrás (segundos):0
Usar Root:Encendido
Almacenar Salida En:%Evento
Continuar Tarea Tras Error:Encendido ]


A esta otra tarea llegamos para guardar la configuración de brillo actual y cambiarlo por el que queramos (Ojo, en mi teléfono poner el brillo a 0 no supone un problema, pero puede haber algún modelo en el que hacer esto suponga dejar la pantalla completamente a oscuras. Para evitar problemas, valdría la pena realizar un perfil que nos devuelva el brillo a su valor normal agitando el teléfono, por ejemplo, antes de probar esta tarea).

Esta tarea se ejecutará a la hora prefijada en la tarea anterior, pero como Tasker no tiene en cuenta los segundos cuando se establece Hora como desencadenante de un perfil, aunque nosotros sumamos 120 segundos a la hora actual lo que realmente estamos haciendo es sumar dos minutos al reloj, sin tener en cuenta los segundos. Es decir, tanto si son las 12:00:01 como si son las 12:00:59, la tarea se ejecutará a las 12:02:00 (de ahí que antes comentara que podía tardar en ejecutarse desde 1 minuto y 1 segundo hasta 2 minutos)

Cambiar Brillo (276)
A1: Establecer variable [ Nombre:%Brillo_actual A:%BRIGHT ]
<Guardamos estado del brillo automático>
A2: Ejecutar consola [ Comando:settings get system screen_brightness_mode
Cuenta atrás (segundos):0
Usar Root:Encendido
Almacenar Salida En:%Estado_brillo_aut ]
A3: Si (if) [ %Estado_brillo_aut ig 1 ]
<Quitamos el brillo automático>
A4: Ejecutar consola [ Comando:settings put system screen_brightness_mode 0
Cuenta atrás (segundos):0
Usar Root:Encendido ]
A5: Fin si (End if)
A6: Brillo de pantalla [ Nivel:1
Deshabilitar 'Safeguard':Encendido
Ignorar nivel actual:Apagado
Efecto inmediato:Apagado ]
A7: Establecer variable [ Nombre:%Cambio_brillo_activo A:1]
A8: Ejecutar consola [ Comando:getevent -c 1 /dev/input/event0
Cuenta atrás (segundos):0
Usar Root:Encendido
Almacenar Salida En:%Evento
Continuar Tarea Tras Error:Encendido ]


A esta tarea llegamos si tocamos la pantalla cuando está oscurecida, para que restaure los niveles previos de brillo.

Restaurar Brillo (277)
A1: Brillo de pantalla [ Nivel:%Brillo_actual
Deshabilitar 'Safeguard':Apagado
Ignorar nivel actual:Apagado
Efecto inmediato:Apagado ]
A2: Ejecutar consola [ Comando:settings put system screen_brightness_mode %Estado_brillo_aut
Cuenta atrás (segundos):0
Usar Root:Encendido ]
A3: Establecer variable [ Nombre:%Cambio_brillo_activo A:0 ]

Y por último tenemos esta otra, que se ejecuta cuando se apaga la pantalla del teléfono y que lo desactiva todo, restaurando el brillo a su nivel normal si se apagara la pantalla estando oscurecida.

Desactivar Seguimiento (281)
A1: Si (if) [ %Cambio_brillo_activo ig 1 ]
A2: Realizar tarea [ Nombre:Restaurar Brillo Prioridad:%priority+1]
A3: Fin si (End if)
A4: Estado del perfil [ Nombre:Captura Pulsacion Establecer:Apagado ]
A5: Estado del perfil [ Nombre:Cambia Brillo Establecer:Apagado ]



Para que el comando getevent funcione, previamente hay que verificar en cada teléfono cuál es el identificador del evento que controla la pantalla. En mi caso es event0, pero no tiene porqué ser así en otros modelos.

Para verlo hay que crear una tarea en Tasker con el comando “getevent –p”, con Root activado y con salida a una variable, por ejemplo %SalidaGetEvent, para ver cuál es el identificador en el teléfono de cada uno. En el mío aparece como event0 name: “atmel_mxt_ts_T100_touchscreen”

danko9696
13/02/18, 19:47:45
Pero eso no es lo que se pretende. En cuanto a uso de batería, no creo que tenga mucho gasto, lo único que hace la tarea es una suma de variables.

Mañana cuelgo los perfiles y las tareas, que hoy ya no me da tiempo.

Salu2...
Por lo que veo sí que es lo que se pretende. No respondí inmediatamente porque pensé que igual había malinterpretado lo que querías hacer. Pero tu mismo dices en tu siguiente post que se llega a la tarea GetEvent siempre que se toque la pantalla y ese era mi punto de desacuerdo con la idea.

La mía es que no creo que sea nada eficiente gestionar todo esto con Tasker cuando es mucho mejor simplemente configurar con Tasker el valor del tiempo de pantalla en espera, gestionado por el SO y es tocar un solo valor. Nada de escuchas, alarmas o Tasker haciendo cosas.

Y no es solo por batería, no tengo problema en gastar más si es para obtener alguna ventaja extra de funcionalidad, pero en este caso no la veo.

_primax
14/02/18, 08:45:59
Por lo que veo sí que es lo que se pretende. No respondí inmediatamente porque pensé que igual había malinterpretado lo que querías hacer. Pero tu mismo dices en tu siguiente post que se llega a la tarea GetEvent siempre que se toque la pantalla y ese era mi punto de desacuerdo con la idea.

La mía es que no creo que sea nada eficiente gestionar todo esto con Tasker cuando es mucho mejor simplemente configurar con Tasker el valor del tiempo de pantalla en espera, gestionado por el SO y es tocar un solo valor. Nada de escuchas, alarmas o Tasker haciendo cosas.

Y no es solo por batería, no tengo problema en gastar más si es para obtener alguna ventaja extra de funcionalidad, pero en este caso no la veo.

Cuando te decía que no es lo que se pretende me refiero a que xerjio lo que estaba buscando es que, pasado un tiempo, la pantalla se oscureciera sin llegar a apagarse.

Como tú dices se apagaría la pantalla, y eso es lo que no queremos que pase.

Evidentemente el teléfono va a gastar más batería, pero no por Tasker, si no porque va a estar todo el tiempo con la pantalla encendida.

La ventaja de este perfil es que puedes volver al estado normal de pantalla con solo un toque. En teléfonos en los que tienes que pulsar un botón para encenderlo puede ser práctico según el caso.

De todas formas, el por qué lo quiere así se lo tendrías que preguntar a él, a xerjio, que fue quien lo planteó ;-)

Salu2...

Caravantes
14/02/18, 11:29:56
Os dejo el proyecto como había prometido.

Fantástico, Primax; ha sido una excelente lección de Tasker.
Te agradezco especialmente que no te hayas limitado a poner los perfiles y las tareas, que te hayas tomado tiempo para explicarlos porque eso facilita mucho la comprensión de este tinglado complejo.
Ojalá que Xerjio tenga root para poder implementarlo.

_primax
15/02/18, 09:25:55
Fantástico, Primax; ha sido una excelente lección de Tasker.
Te agradezco especialmente que no te hayas limitado a poner los perfiles y las tareas, que te hayas tomado tiempo para explicarlos porque eso facilita mucho la comprensión de este tinglado complejo.
Ojalá que Xerjio tenga root para poder implementarlo.

Ha sido un verdadero placer para mí compartir aquí el trabajo.

Con todo lo que he aprendido de vosotros es lo mínimo que puedo hacer para devolveros el favor.

Seguir así :ok:

Salu2...

xerjio
18/02/18, 17:50:55
Os dejo el proyecto como había prometido.

Salu2...


Muchas gracias a todos y sobre todo a _primax, excelente trabajo muy bien explicado. En cuanto pueda me pongo manos a la obra aunque lo primero es hacerle root al teléfono.
;-)