Pesquisas sugerem que a luz azul das telas pode ter um impacto negativo na
sono. O Android 7.1.1 introduziu um recurso chamado Modo noturno, que reduz o
quantidade de luz azul emitida pela tela do dispositivo para combinar melhor com o
de acordo com a hora do dia e o local do usuário. O Android 8.0 introduziu um novo
que dá aos usuários mais controle sobre a intensidade do efeito Iluminação noturna.
O Android 10 introduz a
Serviço do sistema COLOR_DISPLAY_SERVICE
, com uma API do sistema
superfície para dar ao sistema, às configurações e à interface do sistema mais controle sobre todas as cores
de transformação, incluindo o Modo noturno.
O Modo noturno requer um
Hardware
Implementação da HAL 2.0 do Composer 2.0 (HWC 2) que pode aplicar a matriz transmitida
setColorTransform
para realizar a tonalidade sem afetar a energia;
desempenho e compatibilidade de apps.
Implementação
Os fabricantes de dispositivos podem ativar a implementação padrão do recurso
usando as seguintes sinalizações definidas em
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>
O código é dividido entre framework, serviços do sistema, interface do sistema e configurações. A
a funcionalidade principal é controlada por ColorDisplayManager
(com apoio de
ColorDisplayService
).
Os fabricantes de dispositivos devem personalizar a variação de cores com base nas características
do dispositivo, incluindo o ponto branco, a gama e a cor desejada. É possível alterar
rampa de cores sem mudar a implementação básica usando uma sobreposição de configuração.
Essa configuração é expressa como uma equação quadrática para cada um dos valores de vermelho, verde e azul.
Em formato vres = vat2 + vbt + vy-int
em que t é a entrada de temperatura em Kelvin, conforme especificado no intervalo entre
config_nightDisplayColorTemperatureMin
e
config_nightDisplayColorTemperatureMax
(conforme descrito)
na seção anterior), e va, vb e vy-int são as
coeficiente a, coeficiente b e interceptação y, respectivamente, para a curva do primário em questão,
conforme indicado abaixo.
<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>
Recursos da interface
Como o Modo noturno é um recurso voltado ao usuário, ele precisa ser capaz de controlar
reimplantá-lo. Há uma implementação completa das configurações no aplicativo
Projeto (AOSP)
packages/apps/Settings (em inglês).
que os fabricantes de dispositivos podem consultar para definir as configurações
implementação. Os implementadores precisam lidar com
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
para expor essa configuração.
Configurações
As configurações do Modo noturno estão em Configurações > Exibição > Noite Claro. Os usuários podem saber mais sobre o Modo noturno, definir a programação e ativar ou desativar o recurso.
- Ativar automaticamente
- Nunca:o Modo noturno nunca é ativado automaticamente, e precisa ser ativada com o botão Ativar / Desativar manual.
- Programação personalizada:o Modo noturno será ativado no horário especificado Horário de início [padrão: 22h30] e desativado no horário especificado Horário de término [padrão: 6:30 a.m.].
- Do pôr ao nascer do sol:o Modo noturno será ativado e desativado ao anoitecer. ao nascer do sol. O horário do nascer e do pôr do sol depende da localização do dispositivo e a época do ano.
- Ativar / desativar:controle o estado noturno atual. Luz. Esse estado respeita as regras automáticas atuais. Por exemplo, se Noite A luz será acesa às 17h30. (antes que a regra automática a ative às 22h30), O Modo noturno ainda será desativado às 6h30 A luz será apagada às 5h30 (antes de apagar às 6h30), vai se ainda ligar às 22h30
- Intensidade: Barra de busca que controla o nível de tonalidade deslizando de quente para frio. A barra de busca pode ser desativado quando o Modo noturno não está ativado.
- Texto informativo:ensina ao usuário o que o Modo noturno faz e por quê.
Condicional de configurações
Visível na parte de cima das configurações quando o Modo noturno está ativado.
Bloco "Configurações rápidas"
O bloco "Configurações rápidas" se comporta de maneira idêntica à opção Ativar / Desativar alterne em Configurações > Exibição > Modo noturno.