ใช้แสงตอนกลางคืน

งานวิจัยบ่งชี้ว่าแสงสีฟ้าจากหน้าจออาจส่งผลเสียต่อ การนอนหลับ 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 น. อยู่
  • ความเข้ม: แถบเลื่อน ที่ควบคุมระดับการปรับสมดุลสีเขียว-แดงด้วยการเลื่อนจากอุ่นๆ ไปยังความเย็น ระบบอาจค้นหาแถบเลื่อน ปิดใช้เมื่อไม่ได้เปิดใช้งานแสงตอนกลางคืน
  • ข้อความที่ให้ข้อมูล: สอนผู้ใช้เกี่ยวกับการทำงานของแสงตอนกลางคืน และทำไม

การตั้งค่าแบบมีเงื่อนไข

ปรากฏที่ด้านบนของการตั้งค่าเมื่อแสงตอนกลางคืนเปิดอยู่

การ์ดการตั้งค่าด่วน

การ์ดการตั้งค่าด่วนจะทำงานเหมือนกับเปิด / ปิด สลับในการตั้งค่า > การแสดงผล > แสงตอนกลางคืน