งานวิจัยบ่งชี้ว่าแสงสีฟ้าจากหน้าจออาจส่งผลเสียต่อ
การนอนหลับ Android 7.1.1 แนะนำคุณลักษณะที่เรียกว่า "แสงตอนกลางคืน" ซึ่งช่วยลด
ปริมาณแสงสีฟ้าที่หน้าจอของอุปกรณ์ปล่อยออกมา เพื่อให้ตรงกับแสงธรรมชาติ
ช่วงเวลาและตำแหน่งที่ตั้งของผู้ใช้ Android 8.0 ได้เปิดตัวฟีเจอร์ใหม่
ฟีเจอร์ที่ช่วยให้ผู้ใช้ควบคุมความเข้มของเอฟเฟกต์แสงตอนกลางคืนได้มากขึ้น
Android 10 เปิดตัว
บริการของระบบ COLOR_DISPLAY_SERVICE
ที่มี API ระบบ
ทำให้ระบบ การตั้งค่า และ UI ของระบบควบคุมสีทั้งหมดได้มากขึ้น
การเปลี่ยนรูปแบบ รวมถึงแสงตอนกลางคืน
แสงตอนกลางคืนต้องใช้
ฮาร์ดแวร์
Composer HAL 2.0 (HWC 2) ที่สามารถใช้เมทริกซ์ที่ส่งไปยัง
setColorTransform
เพื่อการปรับสมดุลสีเขียว-แดงโดยไม่ส่งผลกระทบต่อพลังงาน
ประสิทธิภาพการทำงาน
และความเข้ากันได้ของแอป
การใช้งาน
ผู้ผลิตอุปกรณ์จะเปิดใช้การใช้งานฟีเจอร์โดยค่าเริ่มต้นได้โดย
โดยใช้แฟล็กต่อไปนี้ที่ระบุไว้ใน
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>
โค้ดจะแบ่งออกเป็นเฟรมเวิร์ก, บริการของระบบ, UI ระบบ และการตั้งค่า
ฟังก์ชันหลักควบคุมโดย ColorDisplayManager
(สนับสนุนโดย
ColorDisplayService
)
ผู้ผลิตอุปกรณ์ควรปรับแต่งระดับสีตามลักษณะของ
ของจอแสดงผลของอุปกรณ์ รวมทั้งจุดสีขาว ขอบเขต และสีที่ต้องการ คุณสามารถเปลี่ยน
ระดับสีโดยไม่เปลี่ยนการติดตั้งใช้งานพื้นฐานโดยใช้การวางซ้อนการกำหนดค่า
การกำหนดค่านี้จะแสดงเป็นสมการกำลังสองสำหรับสีแดง เขียว และน้ำเงินแต่ละรายการ
ในรูปแบบ vres = vat2 + vbt + vy-int
โดยที่ t คือค่าอุณหภูมิที่ป้อนในหน่วยเคลวิน ตามที่ระบุไว้ในช่วงระหว่าง
config_nightDisplayColorTemperatureMin
และ
config_nightDisplayColorTemperatureMax
(ตามที่อธิบายไว้
ในส่วนก่อนหน้า) และ va, vb และ vy-int คือค่า
ค่าสัมประสิทธิ์ a สัมประสิทธิ์ b และค่าตัดแกน y ตามลำดับสำหรับเส้นโค้งของหลักที่ระบุ
ตามที่ระบุไว้ด้านล่าง
<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
เนื่องจากแสงตอนกลางคืนเป็นฟีเจอร์ที่แสดงต่อผู้ใช้ ผู้ใช้จึงต้องสามารถควบคุมได้
ได้ มีการตั้งค่าในโปรแกรมโอเพนซอร์สของ Android อย่างเต็มรูปแบบ
โปรเจ็กต์ (AOSP)
แพ็กเกจ/แอป/การตั้งค่า
ที่ผู้ผลิตอุปกรณ์สามารถอ้างอิงสำหรับการตั้งค่า
การใช้งานของคุณ ผู้ปฏิบัติงานต้องจัดการกับ
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
เพื่อแสดงการตั้งค่านี้
การตั้งค่า
การตั้งค่าสำหรับแสงตอนกลางคืนอยู่ในการตั้งค่า > การแสดงผล > ยามค่ำ สว่าง จากตรงนั้น ผู้ใช้จะสามารถเรียนรู้เกี่ยวกับแสงตอนกลางคืน ตั้งเวลา แล้วเปิดหรือปิด
- เปิดโดยอัตโนมัติ
- ไม่เลย: แสงตอนกลางคืนจะไม่เปิดโดยอัตโนมัติและ ต้องเปิดใช้งานด้วยการสลับเปิด / ปิดด้วยตนเอง
- กำหนดเวลาเอง: แสงตอนกลางคืนจะเปิดตามเวลาที่กำหนด เวลาเริ่มต้น [ค่าเริ่มต้น: 22:30 น.] และปิดตามที่ระบุ เวลาสิ้นสุด [ค่าเริ่มต้น: 6:30 น.]
- พระอาทิตย์ตกถึงพระอาทิตย์ขึ้น: แสงตอนกลางคืนจะเปิดเมื่อพระอาทิตย์ตกและปิด ตอนพระอาทิตย์ขึ้น เวลาพระอาทิตย์ขึ้นและตกจะขึ้นอยู่กับตําแหน่งของอุปกรณ์ และช่วงเวลาของปี
- เปิด / ปิด: สลับที่ควบคุมสถานะปัจจุบันของกลางคืน เบา สถานะนี้จะเป็นไปตามกฎอัตโนมัติที่มีอยู่ เช่น หากกลางคืน ไฟเปิดอยู่ตอน 17:30 น. (ก่อนที่กฎอัตโนมัติจะเปิด เวลา 22:30 น.) แสงตอนกลางคืนจะยังคงปิดในเวลา 6.30 น. และถ้ากลางคืน ไฟจะถูกปิดตอน 5:30 น. (ก่อนปิดตอน 6:30 น.) ยังคงเปิดตอน 22:30 น. อยู่
- ความเข้ม: แถบเลื่อน ที่ควบคุมระดับการปรับสมดุลสีเขียว-แดงด้วยการเลื่อนจากอุ่นๆ ไปยังความเย็น ระบบอาจค้นหาแถบเลื่อน ปิดใช้เมื่อไม่ได้เปิดใช้งานแสงตอนกลางคืน
- ข้อความที่ให้ข้อมูล: สอนผู้ใช้เกี่ยวกับการทำงานของแสงตอนกลางคืน และทำไม
การตั้งค่าแบบมีเงื่อนไข
ปรากฏที่ด้านบนของการตั้งค่าเมื่อแสงตอนกลางคืนเปิดอยู่
การ์ดการตั้งค่าด่วน
การ์ดการตั้งค่าด่วนจะทำงานเหมือนกับเปิด / ปิด สลับในการตั้งค่า > การแสดงผล > แสงตอนกลางคืน