Nachtlicht implementieren

Untersuchungen deuten darauf hin, dass blaues Licht von Bildschirmen einen negativen Einfluss Schlaf. Mit Android 7.1.1 wurde eine Funktion namens Nachtlicht eingeführt, die die Menge an blauem Licht, die vom Display des Geräts abgestrahlt wird, um den natürlichen Lichtverhältnissen Tageszeit und Standort der Nutzenden. Mit Android 8.0 wurde eine zusätzliche -Funktion, mit der Nutzer die Intensität des Nachtlicht-Effekts besser steuern können. Mit Android 10 COLOR_DISPLAY_SERVICE-Systemdienst mit einer System-API um dem System, den Einstellungen und der System-UI mehr Kontrolle über alle Farben Transformationen, einschließlich Nachtlicht.

Für die Funktion „Nachtlicht“ ist ein Heimwerkerbedarf Composer HAL 2.0-Implementierung (HWC 2), die die an setColorTransform, um die Tönung ohne Auswirkungen auf die Stromversorgung durchzuführen, Leistung und App-Kompatibilität.

Implementierung

Gerätehersteller können die Standardimplementierung der Funktion aktivieren, indem sie Dabei werden folgende Flags verwendet: 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>

Der Code ist in Framework, Systemdienste, System-UI und Einstellungen unterteilt. Die Hauptfunktion wird von ColorDisplayManager gesteuert (unterstützt durch ColorDisplayService).

Gerätehersteller sollten den Farbverlauf an die Eigenschaften des Anzeigefeld des Geräts angezeigt, einschließlich Weißpunkt, Farbumfang und gewünschter Farbe. Sie können die ohne die Basisimplementierung mithilfe eines Konfigurations-Overlays zu ändern. Diese Konfiguration wird als quadratische Gleichung für Rot, Grün und Blau ausgedrückt. in der Form vres = vat2 + vbt + vy-int. wobei t die Temperatur in Kelvin ist, angegeben im Bereich zwischen config_nightDisplayColorTemperatureMin und config_nightDisplayColorTemperatureMax (wie beschrieben) im vorherigen Abschnitt) und va, vb und vy-int sind die a-Koeffizient, b-Koeffizient und y-Achsenabschnitt für die gegebene Primärkurve, wie unten angegeben.

    <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>

UI-Funktionen

Da das Nachtlicht eine für den Nutzer sichtbare Funktion ist, müssen Nutzende . Die Einstellungen sind vollständig in Android Open Source implementiert. Projekt (AOSP) Pakete/Apps/Einstellungen Projekt, auf das sich Gerätehersteller für ihre Einstellungen beziehen können Implementierung. Implementierungen müssen Settings.ACTION_NIGHT_DISPLAY_SETTINGS um diese Einstellung verfügbar zu machen.

Einstellungen

Die Einstellungen für das Nachtlicht finden Sie unter Einstellungen > Anzeigen > Nachts Hell: Dort können Nutzer mehr über das Nachtlicht erfahren, seinen Zeitplan festlegen aktivieren oder deaktivieren.

  • Automatisch aktivieren <ph type="x-smartling-placeholder">
      </ph>
    • Nie:Das Nachtlicht wird nie automatisch eingeschaltet und muss manuell mit der Ein/Aus-Schaltfläche Ein/Aus aktiviert werden.
    • Benutzerdefinierter Zeitplan:Das Nachtlicht wird zu einem bestimmten Zeitpunkt eingeschaltet. Startzeit [Standard: 22:30 Uhr] und nach einem festgelegten Zeitpunkt Ende [Standard: 6:30 Uhr].
    • Sonnenuntergang bis -aufgang:Das Nachtlicht wird bei Sonnenuntergang ein- und ausgeschaltet. bei Sonnenaufgang. Wann die Sonne auf- oder untergeht, hängt vom Gerätestandort ab und die Jahreszeit.
  • Ein/Aus:Ein/Aus-Schaltfläche zur Steuerung des aktuellen Nachtmodus Leicht. Bei diesem Status werden bestehende automatische Regeln berücksichtigt. Wenn beispielsweise bei Nacht Die LED ist um 17:30 Uhr eingeschaltet. bevor die automatische Regel um 22:30 Uhr, Das Nachtlicht schaltet sich auch um 6:30 Uhr aus. Das Licht wird um 5:30 Uhr ausgeschaltet und um 6:30 Uhr ausgeschaltet. immer noch um 22:30 Uhr eingeschaltet werden.
  • Intensität: Suchleiste regelt die Färbung von warm auf kalt. Die Suchleiste kann deaktiviert, wenn das Nachtlicht nicht aktiviert ist.
  • Informationstext:Zeigt dem Nutzer die Funktion des Nachtlichts an. und warum.

Bedingungen für Einstellungen

Wird oben in den Einstellungen angezeigt, wenn das Nachtlicht eingeschaltet ist.

Schnelleinstellungen-Kachel

Die Kachel „Schnelleinstellungen“ verhält sich genauso wie die Kachel Ein / Aus. unter Einstellungen > Anzeigen > Nachtlicht.