Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Implementazione della luce notturna

La ricerca suggerisce che la luce blu degli schermi può avere un impatto negativo sul sonno. Android 7.1.1 ha introdotto una funzione chiamata Luce notturna che riduce la quantità di luce blu emessa dal display del dispositivo per adattarsi meglio alla luce naturale dell'ora del giorno e della posizione dell'utente. Android 8.0 ha introdotto una funzionalità aggiuntiva che offre agli utenti un maggiore controllo sull'intensità dell'effetto Luce notturna. Android 10 introduce il servizio di sistema COLOR_DISPLAY_SERVICE , con una superficie API di sistema per dare al sistema, alle impostazioni e all'interfaccia utente di sistema un maggiore controllo su tutte le trasformazioni dei colori, inclusa la luce notturna.

Night Light richiede un'implementazione HAL 2.0 (HWC 2) di Hardware Composer che possa applicare la matrice passata a setColorTransform per eseguire la colorazione senza setColorTransform su potenza, prestazioni e compatibilità delle app.

Implementazione

I produttori di dispositivi possono abilitare l'implementazione predefinita della funzionalità utilizzando i seguenti flag definiti in 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 tra framework, servizi di sistema, interfaccia utente di sistema e impostazioni. La funzionalità principale è controllata da ColorDisplayManager (supportato da ColorDisplayService ).

I produttori di dispositivi dovrebbero personalizzare la scala di colori in base alle caratteristiche del pannello del display del dispositivo, inclusi il punto di bianco, la gamma e il colore desiderato. È possibile modificare la scala di colori senza modificare l'implementazione di base utilizzando una sovrapposizione di configurazione. Questa configurazione è espressa come un'equazione quadratica per ciascuno di rosso, verde e blu, nella forma v res = v a t 2 + v b t + v y-int dove t è l'ingresso della temperatura in Kelvin, come specificato nel intervallo tra config_nightDisplayColorTemperatureMin e config_nightDisplayColorTemperatureMax (come descritto nella sezione precedente), e v a, v b, e v y-int sono un coefficiente, b-coefficiente e intercetta, rispettivamente, per la curva del primario determinato, 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à dell'interfaccia utente

Poiché Night Light è una funzionalità rivolta agli utenti, gli utenti devono essere in grado di controllarla. Esiste un'implementazione completa delle impostazioni nel progetto di pacchetti / app / impostazioni Android Open Source Project (AOSP) a cui i produttori di dispositivi possono fare riferimento per l'implementazione delle impostazioni. Gli implementatori devono gestire l'intento Settings.ACTION_NIGHT_DISPLAY_SETTINGS per esporre questa impostazione.

impostazioni

Le impostazioni per Luce notturna si trovano in Impostazioni> Display> Luce notturna . Da lì, gli utenti possono conoscere la luce notturna, impostarne la programmazione e attivarla o disattivarla.

  • Attiva automaticamente
    • Mai: la luce notturna non si accenderà mai automaticamente e deve essere attivata con l'interruttore manuale On / Off .
    • Pianificazione personalizzata: la luce notturna si accende a un'ora di inizio specificata [impostazione predefinita: 22:30] e si spegne a un'ora di fine specificata [impostazione predefinita: 6:30].
    • Dal tramonto all'alba: la luce notturna si accende al tramonto e si spegne all'alba. L'ora di alba e tramonto dipende dalla posizione del dispositivo e dal periodo dell'anno.
  • On / Off: interruttore che controlla lo stato corrente della luce notturna. Questo stato rispetta le regole automatiche esistenti. Ad esempio, se la luce notturna viene attivata alle 17:30 (prima che la regola automatica si attivi alle 22:30), la luce notturna si spegnerà comunque alle 6:30 e se la luce notturna viene disattivata alle 5 : 30 (prima che si spenga alle 6:30), si accenderà comunque alle 22:30
  • Intensità: barra di ricerca che controlla il livello di tinta facendo scorrere da caldo a freddo. La seekbar può essere disabilitata quando Night Light non è attivato.
  • Testo informativo: insegna all'utente cosa fa Night Light e perché.

Impostazioni condizionali

Visibile nella parte superiore delle Impostazioni quando la luce notturna è attiva.

Riquadro Impostazioni rapide

Il riquadro Impostazioni rapide si comporta in modo identico all'interruttore On / Off in Impostazioni> Display> Luce notturna .