Gece ışığını uygulama

Araştırmalar, ekranlardan gelen mavi ışığın uykuyu olumsuz yönde etkileyebileceğini gösteriyor. Android 7.1.1'de, kullanıcının bulunduğu konuma ve günün saatine göre doğal ışıkla daha iyi eşleşecek şekilde cihaz ekranının yaydığı mavi ışık miktarını azaltan Gece Işığı adlı bir özellik kullanıma sunulmuştur. Android 8.0, kullanıcılara Gece Işığı efektinin yoğunluğu üzerinde daha fazla kontrol sağlayan ek bir özellik sundu. Android 10, sisteme, Ayarlar'a ve Sistem Kullanıcı Arayüzü'ne Gece Işığı dahil tüm renk dönüşümleri üzerinde daha fazla kontrol sağlamak için bir sistem API yüzeyi içeren COLOR_DISPLAY_SERVICE sistem hizmetini kullanıma sunar.

Gece Işığı, gücü, performansı ve uygulama uyumluluğunu etkilemeden renklendirme yapmak için setColorTransform'ye iletilen matrisi uygulayabilen bir Hardware Composer HAL 2.0 (HWC 2) uygulaması gerektirir.

Uygulama

Cihaz üreticileri, 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, çerçeve, sistem hizmetleri, sistem kullanıcı arayüzü ve Ayarlar arasında bölünmüştür. Temel işlevler ColorDisplayManager tarafından kontrol edilir (ColorDisplayService tarafından desteklenir).

Cihaz üreticileri, renk rampasını beyaz nokta, renk gamı ve istenen renk dahil olmak üzere cihazın ekran panelinin özelliklerine göre özelleştirmelidir. Yapılandırma yer paylaşımını kullanarak temel uygulamayı değiştirmeden renk rampasını değiştirebilirsiniz. Bu yapılandırma, kırmızı, yeşil ve mavi için vres = vat2 + vbt + vy-int şeklinde bir ikinci dereceden denklem olarak ifade edilir. Burada t, config_nightDisplayColorTemperatureMin ile config_nightDisplayColorTemperatureMax arasındaki aralıkta belirtildiği gibi (önceki bölümde açıklandığı gibi) Kelvin cinsinden sıcaklık girişidir ve va, vb ve vy-int, aşağıda belirtildiği gibi, belirli birincil eğri için sırasıyla a katsayısı, b katsayısı ve y kesme noktasıdır.

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

Kullanıcı arayüzü özellikleri

Gece Işığı kullanıcılara yönelik bir özellik olduğundan kullanıcıların bunu kontrol edebilmesi gerekir. Android Açık Kaynak Projesi (AOSP) packages/apps/Settings projesinde, cihaz üreticilerinin Ayarlar uygulamalarında referans olarak kullanabileceği ayarlar için tam bir uygulama mevcuttur. Uygulamacılar, bu ayarı göstermek için Settings.ACTION_NIGHT_DISPLAY_SETTINGS intent'i yönetmelidir.

Ayarlar

Gece Işığı ayarları Ayarlar > Ekran > Gece Işığı'nda bulunur. Kullanıcılar buradan Gece Işığı hakkında bilgi edinebilir, programını ayarlayabilir ve özelliği etkinleştirip devre dışı bırakabilir.

  • Otomatik olarak aç
    • Hiçbir zaman: Gece Işığı hiçbir zaman otomatik olarak açılmaz ve manuel Açık/Kapalı açma/kapatma düğmesiyle etkinleştirilmelidir.
    • Özel program: Gece Işığı, belirtilen başlangıç saatinde [varsayılan: 22:30] açılır ve belirtilen bitiş saatinde [varsayılan: 06:30] kapanır.
    • Güneşin batışından doğuşuna: Gece Işığı, güneş battığında açılır ve güneş doğduğunda kapanır. Güneşin doğuş ve batış saati, cihazın konumuna ve yılın zamanına bağlıdır.
  • Açık/Kapalı: Gece Işığı'nın mevcut durumunu kontrol eden açma/kapatma düğmesi. Bu durum, mevcut otomatik kurallara uyar. Örneğin, Gece Işığı 17:30'da (otomatik kuralın 22:30'da açmasından önce) açılırsa Gece Işığı, 06:30'ta kapanmaya devam eder. Gece Işığı 05:30'ta (06:30'ta kapanmadan önce) kapatılırsa 22:30'ta açılmaya devam eder.
  • Yoğunluk: Sıcak tonlardan soğuk tonlara kaydırarak renk tonunu kontrol eden arama çubuğu. Gece Işığı etkin olmadığında kaydırma çubuğu devre dışı bırakılabilir.
  • Bilgilendirici metin: Kullanıcıya Gece Işığı'nın ne işe yaradığını ve neden kullanıldığını öğretir.

Ayarlar koşullu

Gece Işığı açıkken Ayarlar'ın üst kısmında görünür.

Hızlı Ayar kutusu

Hızlı Ayarlar kartındaki açma/kapatma düğmesi, Ayarlar > Ekran > Gece Işığı'ndaki açma/kapatma düğmesiyle aynı şekilde çalışır.