Wdróż Podświetlenie nocne

Badania pokazują, że niebieskie światło ekranów może mieć negatywny wpływ na sen. W Androidzie 7.1.1 wprowadzono funkcję Podświetlenie nocne, która zmniejsza ilość niebieskiego światła emitowanego przez wyświetlacz urządzenia, aby lepiej pasowały do naturalnego w zależności od pory dnia i lokalizacji użytkownika. W Androidzie 8.0 wprowadziliśmy funkcja, która daje użytkownikom większą kontrolę nad intensywnością efektu Podświetlenia nocnego. Android 10 wprowadza Usługa systemowa COLOR_DISPLAY_SERVICE z systemowym interfejsem API aby dać systemowi, Ustawieniaom i interfejsowi systemu większą kontrolę nad wszystkimi kolorami przekształcenia, w tym Podświetlenie nocne.

Podświetlenie nocne wymaga: Sprzęt Implementacja usługi Composer HAL 2.0 (HWC 2), która może zastosować macierz przekazaną do setColorTransform, aby barwić bez wpływu na zasilanie. wydajność i zgodność z aplikacjami.

Implementacja

Producenci urządzeń mogą włączyć domyślną implementację przez przy użyciu następujących flag zdefiniowanych w 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>

Kod jest podzielony na platformę, usługi systemowe, interfejs systemu i ustawienia. główną funkcjonalność jest kontrolowane przez: ColorDisplayManager (wspierany przez ColorDisplayService).

Producenci urządzeń powinni dostosować skalę kolorów na podstawie na panelu wyświetlacza urządzenia, w tym z punktem bieli, paletą i wybranym kolorem. Możesz zmienić barwy za pomocą nakładki konfiguracji bez zmiany implementacji podstawowej. Ta konfiguracja jest wyrażona jako równanie kwadratowe dla każdego z kolorów: czerwonego, zielonego i niebieskiego, w formacie vres = vat2 + vbt + vy-int gdzie t to wartość temperatury podana w kelwinach, określona jako wartość od config_nightDisplayColorTemperatureMin i config_nightDisplayColorTemperatureMax (zgodnie z opisem w poprzedniej sekcji), a parametry va, vb i y-int to współczynnik a, współczynnik b i punkt przecięcia z osią y dla krzywej danego pierwiastka, jak opisano poniżej.

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

Funkcje interfejsu

Podświetlenie nocne jest funkcją dostępną dla użytkowników, dlatego musi mieć możliwość . Ustawienia są w pełni wdrażane na platformie Android Open Source, Projekt (AOSP) pakiety/aplikacje/ustawienia które producenci urządzeń mogą sprawdzić w Ustawieniach. implementacji. Implementatory muszą obsługiwać Settings.ACTION_NIGHT_DISPLAY_SETTINGS do udostępnienia tego ustawienia.

Ustawienia

Ustawienia Podświetlenia nocnego znajdziesz w sekcji Ustawienia > Wyświetlacz > Noc Jasny. Tam użytkownicy mogą dowiedzieć się więcej o Podświetleniu nocnym, ustawić jego harmonogram i włącz lub wyłącz tę funkcję.

  • Włącz automatycznie
    • Nigdy: Podświetlenie nocne nigdy nie będzie włączać się automatycznie i musi być włączony ręcznie przełącznikiem Wł./Wył.
    • Niestandardowy harmonogram: Podświetlenie nocne włącza się o określonej godzinie Godzina rozpoczęcia [domyślnie: 22:30] i wyłączona o określonej godzinie Godzina zakończenia [domyślnie: 6:30.].
    • Od zachodu do wschodu słońca: podświetlenie nocne włącza się i wyłącza o zachodzie słońca. o wschodzie słońca. Czas wschodu i zachodu słońca zależy od lokalizacji urządzenia czy pory roku.
  • Wł./Wył.: przełącznik określający obecny stan trybu nocnego. Lekkie. Ten stan uwzględnia istniejące reguły automatyczne. Na przykład, jeśli tryb nocny Światło jest włączone o 17:30. (zanim reguła automatyczna spowoduje jego włączenie godz. 22:30), Podświetlenie nocne nadal wyłączy się o 6:30, a jeśli jest noc Światło zostanie wyłączone o 5:30 (zanim wyłączy się o 6:30), włącz o 22:30.
  • Intensywność: Pasek przewijania reguluje poziom odcienia, przechodząc z ciepłego na zimny. Pasek przewijania może być wyłączone, gdy Podświetlenie nocne jest wyłączone.
  • Tekst informacyjny: zawiera informacje na temat działania Podświetlenia nocnego. i dlaczego.

Ustawienia warunkowe

Widoczne u góry Ustawień przy włączonym Podświetleniu nocnym.

kafelek Szybkich ustawień

Kafelek Szybkie ustawienia działa tak samo jak karta Wł./Wył. przełącz w Ustawieniach > Wyświetlacz > Podświetlenie nocne