Araştırmalar ekranlardan gelen mavi ışığın uyku üzerinde olumsuz bir etkisi olabileceğini öne sürüyor. Android 7.1.1, kullanıcının günün saatine ve konumuna göre doğal ışıkla daha iyi eşleşmesi için cihaz ekranının yaydığı mavi ışık miktarını azaltan Gece Işığı adı verilen bir özelliği kullanıma sundu. 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, Ayarlara ve Sistem Kullanıcı Arayüzüne Gece Işığı dahil tüm renk dönüşümleri üzerinde daha fazla kontrol sağlayan bir sistem API yüzeyiyle COLOR_DISPLAY_SERVICE
sistem hizmetini sunar.
Night Light, gücü, performansı ve uygulama uyumluluğunu etkilemeden renklendirme gerçekleştirmek için setColorTransform
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>tanımlanan aşağıdaki işaretleri kullanarak özelliğin varsayılan uygulamasını etkinleştirebilir
Kod çerçeve, sistem hizmetleri, Sistem Kullanıcı Arayüzü ve Ayarlar arasında bölünmüştür. Temel işlevsellik ColorDisplayManager
( ColorDisplayService
tarafından desteklenir) tarafından kontrol edilir.
Cihaz üreticileri, renk rampasını, beyaz nokta, gam ve istenen renk dahil olmak üzere cihazın ekran panelinin özelliklerine göre özelleştirmelidir. Bir yapılandırma katmanı kullanarak temel uygulamayı değiştirmeden renk rampasını değiştirebilirsiniz. Bu konfigürasyon kırmızı, yeşil ve mavinin her biri için v res = v a t 2 + v b t + v y-int biçiminde ikinci dereceden bir denklem olarak ifade edilir; burada t, Şekilde belirtildiği gibi Kelvin cinsinden sıcaklık girişidir. config_nightDisplayColorTemperatureMin
ve config_nightDisplayColorTemperatureMax
(önceki bölümde açıklandığı gibi) arasındaki aralık ve va , vb ve v y-int, verilen birincil eğri için sırasıyla a-katsayısı, b-katsayısı ve y-kesişimidir; aşağıda belirtilmiştir.
<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ıya yönelik bir özellik olduğundan kullanıcıların onu kontrol edebilmesi gerekir. Android Açık Kaynak Projesi (AOSP) paketleri/uygulamaları/Ayarlar projesinde, cihaz üreticilerinin Ayarlar uygulamaları için başvurabilecekleri ayarların tam bir uygulaması bulunmaktadır. Bu ayarın kullanıma sunulması için Settings.ACTION_NIGHT_DISPLAY_SETTINGS
amacını uygulayıcıların ele alması gerekir.
Ayarlar
Gece Işığı ayarları Ayarlar > Ekran > Gece Işığı bölümündedir. Kullanıcılar buradan Gece Işığı hakkında bilgi edinebilir, programını ayarlayabilir ve açıp kapatabilir.
- Otomatik Olarak Aç
- Hiçbir zaman: Gece Işığı hiçbir zaman otomatik olarak açılmaz ve manuel Açma/Kapama düğmesiyle etkinleştirilmesi gerekir.
- Özel program: Gece Işığı belirli bir Başlangıç saatinde [varsayılan: 22:30] açılır ve belirli bir Bitiş saatinde [varsayılan: 6:30] kapanır.
- Gün batımından gün doğumuna: Gece Işığı gün batımında açılır ve gün doğumunda kapanır. Gün doğumu ve gün batımının 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 geçiş yapın. Bu durum mevcut otomatik kurallara uyar. Örneğin, Gece Işığı saat 17:30'da açılırsa (otomatik kuralın saat 22:30'da açılmasından önce), Gece Işığı sabah 6:30'da kapanmaya devam eder. Gece Işığı saat 5'te kapatılırsa :30 am (sabah 6:30'da kapanmadan önce), 22:30'da açılmaya devam edecek
- Yoğunluk: Sıcaktan soğuğa kaydırarak renk tonu seviyesini kontrol eden arama çubuğu . Gece Işığı etkinleştirilmediğinde arama çubuğu devre dışı bırakılabilir.
- Bilgilendirici metin: Kullanıcıya Gece Işığının ne yaptığını ve nedenini öğretir.
Ayarlar koşullu
Gece Işığı açıkken Ayarlar'ın üst kısmında görünür.
Hızlı Ayarlar kutucuğu
Hızlı Ayarlar kutucuğu, Ayarlar > Ekran > Gece Işığı bölümündeki Açık/Kapalı düğmesiyle aynı şekilde davranır.