In base alla ricerca, la luce blu degli schermi può avere un impatto negativo
dormire meglio. Android 7.1.1 ha introdotto una funzionalità chiamata Luminosità notturna che riduce
quantità di luce blu emessa dal display del dispositivo per adattarsi meglio alla luce naturale
luce dell'ora del giorno e della località dell'utente. Android 8.0 ha introdotto un'ulteriore
che offre agli utenti un maggiore controllo sull'intensità dell'effetto Luce notturna.
Android 10 introduce
COLOR_DISPLAY_SERVICE
servizio di sistema, con un'API di sistema
per dare al sistema, alle Impostazioni e all'UI di sistema più controllo su tutti i colori
trasformazioni avanzate, inclusa la luminosità notturna.
La funzionalità di luminosità notturna richiede
Articoli di ferramenta
Composer HAL 2.0 (HWC 2) implementazione che può applicare la matrice passata a
setColorTransform
per eseguire la colorazione senza influire sull'alimentazione,
prestazioni e compatibilità delle app.
Implementazione
I produttori di dispositivi possono attivare l'implementazione predefinita della funzionalità
utilizzando i seguenti flag definiti
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>
Il codice è suddiviso in framework, servizi di sistema, UI di sistema e impostazioni. La
la funzionalità di base è controllata da ColorDisplayManager
(supportata da
ColorDisplayService
).
I produttori di dispositivi devono personalizzare la rampa di colore in base alle caratteristiche del
schermo del dispositivo, inclusi punto di bianco, gamut e colore desiderato. Puoi modificare
colore senza modificare l'implementazione di base utilizzando un overlay di configurazione.
Questa configurazione viene espressa sotto forma di equazione quadrata per ciascuno dei campi rosso, verde e blu,
nel formato vres = vat2 + vbt + vy-int
dove t è l'input di temperatura in Kelvin, come specificato nell'intervallo tra
config_nightDisplayColorTemperatureMin
e
config_nightDisplayColorTemperatureMax
(come descritto
nella sezione precedente) e va, vb e vy-int sono le
rispettivamente per la curva a-coefficiente, il coefficiente b e l'intercetta y per la curva del primario.
come indicato di seguito.
<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>
Funzionalità UI
Poiché la luminosità notturna è una funzionalità rivolta agli utenti, gli utenti devono poter controllare
li annotino. C'è un'implementazione completa delle impostazioni in Android Open Source
Progetto (AOSP)
pacchetti/app/impostazioni
progetto a cui i produttori di dispositivi possono fare riferimento per le proprie Impostazioni
implementazione. Gli implementatori devono gestire
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
l'intento di esporre questa impostazione.
Impostazioni
Le impostazioni per la luminosità notturna si trovano in Impostazioni > Display > Sera Luce. Qui gli utenti possono conoscere la funzionalità Luminosità notturna, impostarne la programmazione e attivare o disattivare la funzionalità.
- Attiva automaticamente
- .
- Mai: la luminosità notturna non si attiverà mai automaticamente e Deve essere attivata con il pulsante di attivazione / disattivazione manuale.
- Programmazione personalizzata:la luminosità notturna si attiva in base a un orario specificato Ora di inizio [predefinita: 22:30] e disattivata a un orario specificato Ora di fine [predefinita: 6:30].
- Dal tramonto all'alba: la luminosità notturna si attiva al tramonto e si disattiva all'alba. L'ora dell'alba e del tramonto dipende dalla posizione del dispositivo. e il periodo dell'anno.
- On/Off:attiva/disattiva per controllare lo stato attuale della modalità Notte. Luce. Questo stato rispetta le regole automatiche esistenti. Ad esempio, se Notte La luce viene accesa alle 17:30. (prima che la regola automatica lo attivi alle 22:30), La luminosità notturna continuerà a essere disattivata alle 6:30. La luce viene spenta alle 5:30 (prima di spegnersi alle 6:30), accendi sempre alle 22:30.
- Intensità: Seekbar che controlla il livello di tinta scorrendo da Calda a Fredda. La barra di scorrimento può essere è disattivata quando la luminosità notturna non è attiva.
- Testo informativo: spiega all'utente cosa fa la funzionalità di luminosità notturna e perché.
Impostazioni condizionali
Visibile nella parte superiore delle Impostazioni quando la luminosità notturna è attiva.
Riquadro Impostazioni rapide
Il riquadro Impostazioni rapide si comporta in modo identico all'impostazione On / Off. attiva/disattiva in Impostazioni > Display > Luminosità notturna.