ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
ใช้แสงตอนกลางคืน
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
งานวิจัยชี้ว่าแสงสีฟ้าจากหน้าจออาจส่งผลเสียต่อการนอนหลับ Android 7.1.1 เปิดตัวฟีเจอร์ที่เรียกว่า "แสงตอนกลางคืน" ซึ่งจะช่วยลดปริมาณแสงสีฟ้าที่ปล่อยออกมาจากจอแสดงผลของอุปกรณ์เพื่อให้เข้ากับแสงธรรมชาติของเวลาและสถานที่ตั้งของผู้ใช้ได้ดียิ่งขึ้น Android 8.0 เปิดตัวฟีเจอร์เพิ่มเติมที่ช่วยให้ผู้ใช้ควบคุมความเข้มของเอฟเฟกต์แสงสลัวได้มากขึ้น
Android 10 เปิดตัวCOLOR_DISPLAY_SERVICE
บริการของระบบที่มีแพลตฟอร์ม API ของระบบเพื่อให้ระบบ การตั้งค่า และ UI ของระบบควบคุมการเปลี่ยนสีทั้งหมดได้มากขึ้น รวมถึงโหมดกลางคืน
ฟีเจอร์แสงสลัวต้องใช้การใช้งาน Hardware Composer HAL 2.0 (HWC 2) ที่สามารถนําเมทริกซ์ที่ส่งไปยัง setColorTransform
ไปใช้เพื่อปรับสีโดยไม่ส่งผลต่อพลังงาน ประสิทธิภาพ และความเข้ากันได้ของแอป
การใช้งาน
ผู้ผลิตอุปกรณ์สามารถเปิดใช้การใช้งานเริ่มต้นของฟีเจอร์นี้ได้ด้วยการใช้ Flag ต่อไปนี้ที่ระบุไว้ใน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 Open Source (AOSP) packages/apps/Settings ที่ผู้ผลิตอุปกรณ์สามารถอ้างอิงเพื่อใช้งานการตั้งค่า ผู้ติดตั้งใช้งานต้องจัดการกับตัวเลือกเพื่อแสดงการตั้งค่านี้Settings.ACTION_NIGHT_DISPLAY_SETTINGS
การตั้งค่า
การตั้งค่าแสงตอนกลางคืนอยู่ในการตั้งค่า > จอแสดงผล > แสงตอนกลางคืน จากตรงนั้น ผู้ใช้จะดูข้อมูลเกี่ยวกับฟีเจอร์ปรับแสงตอนกลางคืน ตั้งเวลา และเปิดหรือปิดฟีเจอร์นี้ได้
- เปิดโดยอัตโนมัติ
- ไม่เคย: ไฟกลางคืนจะไม่เปิดโดยอัตโนมัติ และต้องเปิดใช้งานด้วยปุ่มสลับเปิด / ปิดด้วยตนเอง
- กำหนดการที่กำหนดเอง: แสงตอนกลางคืนจะเปิดเมื่อถึงเวลาเริ่มต้นที่ระบุ [ค่าเริ่มต้น: 22:30 น.] และปิดเมื่อถึงเวลาสิ้นสุดที่ระบุ [ค่าเริ่มต้น: 06:30 น.]
- พระอาทิตย์ตกถึงพระอาทิตย์ขึ้น: แสงตอนกลางคืนจะเปิดเมื่อพระอาทิตย์ตกและปิดเมื่อพระอาทิตย์ขึ้น เวลาพระอาทิตย์ขึ้นและตกจะขึ้นอยู่กับตำแหน่งของอุปกรณ์และช่วงเวลาของปี
- เปิด / ปิด: ปุ่มสลับที่ใช้ควบคุมสถานะปัจจุบันของแสงตอนกลางคืน สถานะนี้จะเป็นไปตามกฎอัตโนมัติที่มีอยู่ ตัวอย่างเช่น หากเปิดแสงตอนกลางคืนตอน 17:30 น. (ก่อนที่กฎอัตโนมัติจะเปิดตอน 22:30 น.) แสงตอนกลางคืนจะยังคงปิดตอน 06:30 น. และหากปิดแสงตอนกลางคืนตอน 05:30 น. (ก่อนที่ระบบจะปิดตอน 06:30 น.) แสงตอนกลางคืนจะยังคงเปิดตอน 22:30 น.
- ความเข้ม:
แถบเลื่อน
ที่ควบคุมระดับสีโดยเลื่อนจากโทนอุ่นเป็นโทนเย็น คุณปิดใช้แถบเลื่อนได้เมื่อไม่ได้เปิดใช้งานแสงตอนกลางคืน
- ข้อความที่ให้ข้อมูล: อธิบายให้ผู้ใช้ทราบว่าฟีเจอร์ปรับแสงเป็นสีเหลืองนวลทําอะไรได้บ้างและทําไปเพื่ออะไร
การตั้งค่าแบบมีเงื่อนไข
แสดงที่ด้านบนของการตั้งค่าเมื่อเปิดแสงตอนกลางคืน
การ์ดการตั้งค่าด่วน
ไทล์การตั้งค่าด่วนจะทํางานเหมือนกับปุ่มสลับเปิด / ปิดในการตั้งค่า > จอแสดงผล > ไฟกลางคืน
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Implement night light\n\nResearch suggests that blue light from screens can have a negative impact on\nsleep. Android 7.1.1 introduced a feature called Night Light that reduces the\namount of blue light emitted by the device display to better match the natural\nlight of the user's time of day and location. Android 8.0 introduced an additional\nfeature that gives users more control over the intensity of the Night Light effect.\nAndroid 10 introduces the\n`COLOR_DISPLAY_SERVICE` system service, with a system API\nsurface to give the system, Settings, and System UI more control over all color\ntransforms, including Night Light.\n\n\nNight Light requires a\n[Hardware\nComposer HAL 2.0](/docs/core/graphics/implement-hwc) (HWC 2) implementation that can apply the matrix passed to\n`setColorTransform` to perform tinting without impacting power,\nperformance, and app compatibility.\n\nImplementation\n--------------\n\n\nDevice manufacturers can enable the default implementation of the feature by\nusing the following flags defined in\n[frameworks/base/core/res/res/values/config.xml](https://android.googlesource.com/platform/frameworks/base/+/android16-release/core/res/res/values/config.xml)\n\n```\n \u003c!-- Control whether Night display is available. This should only be enabled\n on devices with HWC 2 color transform support. --\u003e\n \u003cbool name=\"config_nightDisplayAvailable\"\u003efalse\u003c/bool\u003e\n \u003c!-- Default mode to control how Night display is automatically activated.\n One of the following values (see NightDisplayController.java):\n 0 - AUTO_MODE_DISABLED\n 1 - AUTO_MODE_CUSTOM\n 2 - AUTO_MODE_TWILIGHT\n --\u003e\n \u003cinteger name=\"config_defaultNightDisplayAutoMode\"\u003e0\u003c/integer\u003e\n \u003c!-- Default time when Night display is automatically activated.\n Represented as milliseconds from midnight (e.g. 79200000 == 10pm). --\u003e\n \u003cinteger name=\"config_defaultNightDisplayCustomStartTime\"\u003e79200000\u003c/integer\u003e\n \u003c!-- Default time when Night display is automatically deactivated.\n Represented as milliseconds from midnight (e.g. 21600000 == 6am). --\u003e\n \u003cinteger name=\"config_defaultNightDisplayCustomEndTime\"\u003e21600000\u003c/integer\u003e\n\n \u003c!-- Minimum color temperature, in Kelvin, supported by Night display. --\u003e\n \u003cinteger name=\"config_nightDisplayColorTemperatureMin\"\u003e2596\u003c/integer\u003e\n \u003c!-- Default color temperature, in Kelvin, to tint the screen when Night display is\n activated. --\u003e\n \u003cinteger name=\"config_nightDisplayColorTemperatureDefault\"\u003e2850\u003c/integer\u003e\n \u003c!-- Maximum color temperature, in Kelvin, supported by Night display. --\u003e\n \u003cinteger name=\"config_nightDisplayColorTemperatureMax\"\u003e4082\u003c/integer\u003e\n```\n\n\nThe code is divided between framework, system services, System UI, and Settings. The\ncore functionality is controlled by `ColorDisplayManager` (backed by\n`ColorDisplayService`).\n\n\nDevice manufacturers should customize the color ramp based on the characteristics of the\ndevice's display panel, including white point, gamut, and desired color. You can change the\ncolor ramp without changing the base implementation by using a configuration overlay.\nThis configuration is expressed as a quadratic equation for each of red, green, and blue,\nin the form v~res~ = v~a~t^2^ + v~b~t + v~y-int~\nwhere t is the temperature input in Kelvin, as specified in the range between\n`config_nightDisplayColorTemperatureMin` and\n`config_nightDisplayColorTemperatureMax` (as described\nin the previous section), and v~a~, v~b~, and v~y-int~ are the\na-coefficient, b-coefficient, and y-intercept, respectively, for the given primary's curve,\nas indicated below. \n\n```\n \u003cstring-array name=\"config_nightDisplayColorTemperatureCoefficientsNative\"\u003e\n \u003c!-- R a-coefficient --\u003e \u003citem\u003e0.0\u003c/item\u003e\n \u003c!-- R b-coefficient --\u003e \u003citem\u003e0.0\u003c/item\u003e\n \u003c!-- R y-intercept --\u003e \u003citem\u003e1.0\u003c/item\u003e\n \u003c!-- G a-coefficient --\u003e \u003citem\u003e-0.00000000962353339\u003c/item\u003e\n \u003c!-- G b-coefficient --\u003e \u003citem\u003e0.000153045476\u003c/item\u003e\n \u003c!-- G y-intercept --\u003e \u003citem\u003e0.390782778\u003c/item\u003e\n \u003c!-- B a-coefficient --\u003e \u003citem\u003e-0.0000000189359041\u003c/item\u003e\n \u003c!-- B b-coefficient --\u003e \u003citem\u003e0.000302412211\u003c/item\u003e\n \u003c!-- B y-intercept --\u003e \u003citem\u003e-0.198650895\u003c/item\u003e\n \u003c/string-array\u003e\n\n \u003cstring-array name=\"config_nightDisplayColorTemperatureCoefficients\"\u003e\n \u003c!-- R a-coefficient --\u003e \u003citem\u003e0.0\u003c/item\u003e\n \u003c!-- R b-coefficient --\u003e \u003citem\u003e0.0\u003c/item\u003e\n \u003c!-- R y-intercept --\u003e \u003citem\u003e1.0\u003c/item\u003e\n \u003c!-- G a-coefficient --\u003e \u003citem\u003e-0.00000000962353339\u003c/item\u003e\n \u003c!-- G b-coefficient --\u003e \u003citem\u003e0.000153045476\u003c/item\u003e\n \u003c!-- G y-intercept --\u003e \u003citem\u003e0.390782778\u003c/item\u003e\n \u003c!-- B a-coefficient --\u003e \u003citem\u003e-0.0000000189359041\u003c/item\u003e\n \u003c!-- B b-coefficient --\u003e \u003citem\u003e0.000302412211\u003c/item\u003e\n \u003c!-- B y-intercept --\u003e \u003citem\u003e-0.198650895\u003c/item\u003e\n \u003c/string-array\u003e\n```\n\nUI features\n-----------\n\n\nBecause Night Light is a user-facing feature, users need to be able to control\nit. There is a full implementation of the settings in the Android Open Source\nProject (AOSP)\n[packages/apps/Settings](https://android.googlesource.com/platform/packages/apps/Settings/)\nproject that device manufacturers can reference for their Settings\nimplementation. Implementers must handle the\n[Settings.ACTION_NIGHT_DISPLAY_SETTINGS](https://developer.android.com/reference/android/provider/Settings.html#ACTION_NIGHT_DISPLAY_SETTINGS)\nintent to expose this setting.\n\n### Settings\n\n\nThe settings for Night Light are in *Settings \\\u003e Display \\\u003e Night\nLight*. From there, users can learn about Night Light, set its schedule,\nand turn it on or off.\n\n- **Turn On Automatically**\n - **Never:** Night Light will never turn on automatically and must be activated with the manual **On / Off** toggle.\n - **Custom schedule:** Night Light turns on at a specified **Start time** \\[default: 10:30 p.m.\\] and off at a specified **End time** \\[default: 6:30 a.m.\\].\n - **Sunset to sunrise:** Night Light turns on at sunset and off at sunrise. The time for sunrise and sunset depends on the device location and the time of year.\n- **On / Off:** Toggle that controls the current state of Night Light. This state respects existing automatic rules. For example, if Night Light is toggled on at 5:30 p.m. (before the automatic rule would turn it on at 10:30 p.m.), Night Light will still turn off at 6:30 a.m. And if Night Light is toggled off at 5:30 a.m. (before it turns off at 6:30 a.m.), it will still turn on at 10:30 p.m.\n- **Intensity:** [Seekbar](https://developer.android.com/reference/android/widget/SeekBar.html) that controls the tint level by sliding from warm to cool. The seekbar can be disabled when Night Light is not activated.\n- **Informational text:** Teaches the user what Night Light does and why.\n\n### Settings conditional\n\n\nVisible at the top of Settings when Night Light is on.\n\n### Quick Settings tile\n\n\nThe Quick Settings tile behaves identically to the **On / Off**\ntoggle in *Settings \\\u003e Display \\\u003e Night Light*."]]