Las investigaciones sugieren que la luz azul de las pantallas puede tener un impacto negativo en
dormirán. Android 7.1.1 introdujo una función llamada Luz nocturna que reduce la temperatura
cantidad de luz azul emitida por la pantalla del dispositivo para que coincida mejor con la luz
la hora del día y la ubicación del usuario. Android 8.0 introdujo una función
que les da a los usuarios más control sobre la intensidad del efecto Luz nocturna.
Android 10 introduce la
Servicio del sistema COLOR_DISPLAY_SERVICE
, con una API del sistema
para darle al sistema, la configuración y la IU del sistema más control sobre todos los colores
transformaciones, incluida Luz nocturna.
La función Luz nocturna requiere un
Hardware
Implementación de HAL de Composer 2.0 (HWC 2) que puede aplicar la matriz que se pasa a
setColorTransform
para realizar ajustes de tono sin afectar la potencia
rendimiento y compatibilidad de apps.
Implementación
Los fabricantes de dispositivos pueden habilitar la implementación predeterminada de la función mediante
con las siguientes marcas definidas en
frameworks/base/core/res/res/values/config.xml
<!-- Control whether Night display is available. This should only be enabled on devices with HWC 2 color transform support. --> <bool name="config_nightDisplayAvailable">false</bool> <!-- Default mode to control how Night display is automatically activated. One of the following values (see NightDisplayController.java): 0 - AUTO_MODE_DISABLED 1 - AUTO_MODE_CUSTOM 2 - AUTO_MODE_TWILIGHT --> <integer name="config_defaultNightDisplayAutoMode">0</integer> <!-- Default time when Night display is automatically activated. Represented as milliseconds from midnight (e.g. 79200000 == 10pm). --> <integer name="config_defaultNightDisplayCustomStartTime">79200000</integer> <!-- Default time when Night display is automatically deactivated. Represented as milliseconds from midnight (e.g. 21600000 == 6am). --> <integer name="config_defaultNightDisplayCustomEndTime">21600000</integer> <!-- Minimum color temperature, in Kelvin, supported by Night display. --> <integer name="config_nightDisplayColorTemperatureMin">2596</integer> <!-- Default color temperature, in Kelvin, to tint the screen when Night display is activated. --> <integer name="config_nightDisplayColorTemperatureDefault">2850</integer> <!-- Maximum color temperature, in Kelvin, supported by Night display. --> <integer name="config_nightDisplayColorTemperatureMax">4082</integer>
El código se divide entre framework, servicios del sistema, IU del sistema y configuración. El
la funcionalidad principal la controla ColorDisplayManager
(respaldada por
ColorDisplayService
).
Los fabricantes de dispositivos deben personalizar la rampa de color según las características de la
el panel de la pantalla del dispositivo, incluidos el punto blanco, la gama y el color deseado. Puedes cambiar el
una rampa de color sin cambiar la implementación básica mediante una superposición de configuración.
Esta configuración se expresa como una ecuación cuadrática para cada rojo, verde y azul,
en el formato vres = vat2 + vbt + vy-int
donde t es la entrada de la temperatura en Kelvin, como se especifica en el rango entre
config_nightDisplayColorTemperatureMin
y
config_nightDisplayColorTemperatureMax
(como se describe
en la sección anterior) y va, vb y vy-int son los atributos
coeficiente a, coeficiente b e intersección y, respectivamente, para la curva de la primaria determinada,
como se indica a continuación.
<string-array name="config_nightDisplayColorTemperatureCoefficientsNative"> <!-- R a-coefficient --> <item>0.0</item> <!-- R b-coefficient --> <item>0.0</item> <!-- R y-intercept --> <item>1.0</item> <!-- G a-coefficient --> <item>-0.00000000962353339</item> <!-- G b-coefficient --> <item>0.000153045476</item> <!-- G y-intercept --> <item>0.390782778</item> <!-- B a-coefficient --> <item>-0.0000000189359041</item> <!-- B b-coefficient --> <item>0.000302412211</item> <!-- B y-intercept --> <item>-0.198650895</item> </string-array> <string-array name="config_nightDisplayColorTemperatureCoefficients"> <!-- R a-coefficient --> <item>0.0</item> <!-- R b-coefficient --> <item>0.0</item> <!-- R y-intercept --> <item>1.0</item> <!-- G a-coefficient --> <item>-0.00000000962353339</item> <!-- G b-coefficient --> <item>0.000153045476</item> <!-- G y-intercept --> <item>0.390782778</item> <!-- B a-coefficient --> <item>-0.0000000189359041</item> <!-- B b-coefficient --> <item>0.000302412211</item> <!-- B y-intercept --> <item>-0.198650895</item> </string-array>
Funciones de la IU
Como la Luz nocturna es una función para los usuarios, estos deben poder controlar
que la modifica. Existe una implementación completa de la configuración en el repositorio de código abierto de Android
Proyecto (AOSP)
paquetes/apps/configuración
proyecto que los fabricantes de dispositivos pueden consultar para su Configuración
para implementarlos. Los implementadores deben manejar
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
para exponer este parámetro de configuración.
Configuración
La configuración de Luz nocturna se encuentra en Configuración > Mostrar > Noche Luz. Allí, los usuarios pueden aprender sobre la función Luz nocturna, establecer su programa, y activarla o desactivarla.
- Activar automáticamente
- Nunca: La Luz nocturna nunca se activará automáticamente ni debe activarse con el botón de activación manual Activado / Desactivado.
- Programación personalizada: La Luz nocturna se activa según un horario especificado Hora de inicio [default: 10:30 p.m.] y desactivada en un horario especificado Hora de finalización [default: 6:30 a.m.]
- Del atardecer al amanecer: La Luz nocturna se activa al atardecer y se apaga al amanecer. La hora del amanecer y el atardecer depende de la ubicación del dispositivo y la época del año.
- Activar o Desactivar: Activa o desactiva la función. Ligero. Este estado respeta las reglas automáticas existentes. Por ejemplo, si Noche La luz se enciende a las 5:30 p.m. (antes de que la regla automática la active a las 10:30 p.m.), La Luz nocturna se desactivará a las 6:30 a.m. La luz se apaga a las 5:30 a.m. (antes de apagarse a las 6:30 a.m.) y seguir encendido a las 10:30 p.m.
- Intensidad: Barra de búsqueda que controla el nivel de tono deslizando el dedo de cálido a frío. La barra deslizante de búsqueda puede se inhabilita cuando la Luz nocturna no está activada.
- Texto informativo: Le enseña al usuario qué hace la función Luz nocturna. y por qué.
Configuración condicional
Visible en la parte superior de Configuración cuando la Luz nocturna está activada.
Tarjeta de Configuración rápida
La tarjeta de Configuración rápida se comporta de manera idéntica a la opción Activar / Desactivar. activar o desactivar en Configuración > Mostrar > Luz nocturna.