Penelitian menunjukkan bahwa cahaya biru dari layar dapat berdampak negatif pada
tidur. Android 7.1.1 memperkenalkan fitur bernama Cahaya Malam yang mengurangi
cahaya biru yang dipancarkan oleh layar perangkat agar lebih cocok dengan
berdasarkan waktu dan lokasi pengguna. Android 8.0 memperkenalkan
yang memberi pengguna kontrol lebih besar atas intensitas efek Cahaya Malam.
Android 10 memperkenalkan
Layanan sistem COLOR_DISPLAY_SERVICE
, dengan API sistem
untuk memberikan kontrol lebih besar kepada sistem, Setelan, dan UI Sistem atas semua warna
transformasi, termasuk Cahaya Malam.
Cahaya Malam memerlukan
Perangkat Keras
Implementasi Composer HAL 2.0 (HWC 2) yang dapat menerapkan matriks yang diteruskan ke
setColorTransform
untuk melakukan penambahan tint tanpa memengaruhi daya,
performa, dan kompatibilitas aplikasi.
Implementasi
Produsen perangkat dapat mengaktifkan
implementasi fitur secara {i>default<i} dengan
menggunakan penanda berikut yang didefinisikan dalam
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>
Kode dibagi antara framework, layanan sistem, UI Sistem, dan Setelan. Tujuan
fungsi inti dikontrol oleh ColorDisplayManager
(didukung oleh
ColorDisplayService
).
Produsen perangkat harus menyesuaikan ramp warna berdasarkan karakteristik
panel tampilan perangkat, termasuk titik putih, gamut, dan warna yang diinginkan. Anda dapat mengubah
warna tanpa mengubah implementasi dasar dengan menggunakan overlay konfigurasi.
Konfigurasi ini dinyatakan sebagai persamaan kuadrat untuk
masing-masing warna merah, hijau, dan biru,
dalam bentuk vres = vat2 + vbt + vy-int
di mana t adalah input suhu dalam Kelvin, seperti yang ditentukan dalam rentang antara
config_nightDisplayColorTemperatureMin
dan
config_nightDisplayColorTemperatureMax
(sebagaimana dijelaskan
di bagian sebelumnya), dan va, vb, dan vy-int adalah
koefisien a, koefisien b, dan perpotongan y untuk kurva primer yang diberikan,
seperti yang ditunjukkan di bawah ini.
<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>
Fitur UI
Karena Cahaya Malam adalah fitur yang ditampilkan kepada pengguna, pengguna harus dapat mengontrol
anotasi. Terdapat implementasi lengkap setelan di Android Open Source
Project (AOSP)
paket/aplikasi/Setelan
yang dapat dirujuk oleh produsen perangkat untuk Setelan
terlepas dari implementasi layanan. Implementasi harus menangani
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
untuk mengekspos setelan ini.
Setelan
Setelan untuk Cahaya Malam ada di Setelan > Tampilan > Malam Ringan. Dari sana, pengguna dapat mempelajari tentang Cahaya Malam, mengatur jadwal, lalu aktifkan atau nonaktifkan.
- Aktifkan Secara Otomatis
- Tidak pernah: Cahaya Malam tidak akan aktif secara otomatis dan harus diaktifkan dengan tombol Aktif / Nonaktif manual.
- Jadwal kustom: Cahaya Malam menyala pada waktu yang ditentukan Waktu mulai [default: 22.30] dan mati pada waktu tertentu Waktu berakhir [default: 06.30].
- Matahari terbenam hingga matahari terbit: Cahaya Malam aktif saat matahari terbenam dan nonaktif saat matahari terbit. Waktu matahari terbit dan terbenam bergantung pada lokasi perangkat dan sepanjang tahun.
- Aktif / Nonaktif: Tombol yang mengontrol status Mode Malam saat ini Ringan. Status ini mematuhi aturan otomatis yang ada. Misalnya, jika Night Lampu dinyalakan pukul 17.30. (sebelum aturan otomatis mengaktifkannya pukul 22.30), Cahaya Malam akan tetap mati pada pukul 06.30 Dan jika Malam Hari Dimatikan pada pukul 05.30 (sebelum mati pada pukul 06.30), maka akan masih nyala jam 10.30 malam.
- Intensitas: Seekbar yang mengontrol level tint dengan menggeser dari hangat ke sejuk. Bilah geser dapat dinonaktifkan jika Cahaya Malam tidak diaktifkan.
- Teks informasi: Mengajari pengguna fungsi Cahaya Malam dan mengapa.
Setelan bersyarat
Terlihat di bagian atas Setelan saat Cahaya Malam aktif.
Kartu Setelan Cepat
Kartu Setelan Cepat berperilaku identik dengan tombol Aktif / Nonaktif aktifkan di Setelan > Tampilan > Cahaya Malam.