اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تفعيل الإضاءة الليلية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تشير الأبحاث إلى أنّ الضوء الأزرق المنبعث من الشاشات يمكن أن يؤثر سلبًا في
النوم. طرح نظام Android 7.1.1 ميزة "الإضاءة الليلية" التي تقلّل من
مقدار الضوء الأزرق المنبعث من شاشة الجهاز لمطابقة ضوء النهار الطبيعي بشكلٍ أفضل في وقت وفّر نظام التشغيل Android 8.0 ميزة إضافية
تمنح المستخدمين مزيدًا من التحكّم في شدة تأثير الإضاءة الليلية.
يقدّم نظام التشغيل Android 10 خدمة النظام
COLOR_DISPLAY_SERVICE
، التي تتضمّن واجهة برمجة تطبيقات
للنظام من أجل منح النظام و"الإعدادات" و"واجهة المستخدم للنظام" مزيدًا من التحكّم في جميع عمليات
تحويل الألوان، بما في ذلك ميزة "الإضاءة الليلية".
تتطلّب ميزة "الإضاءة الليلية" استخدام Hardware 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>
يتم تقسيم الرمز البرمجي بين إطار العمل وخدمات النظام وواجهة مستخدم النظام والإعدادات. يتم التحكّم في
الوظائف الأساسية من خلال ColorDisplayManager
(مدعومًا
ColorDisplayService
).
على المصنّعين تخصيص مخطط الألوان استنادًا إلى خصائص لوحة شاشة
الجهاز، بما في ذلك نقطة الأبيض والنطاق اللوني واللون المطلوب. يمكنك تغيير
تدرّج الألوان بدون تغيير التنفيذ الأساسي باستخدام تراكب الإعدادات.
يتم التعبير عن هذه الإعدادات على شكل معادلة رباعية لكل من الأحمر والأخضر والأزرق،
بالصيغة vres = vat2 + vbt + vy-int
حيث t هي درجة الحرارة المُدخلة بالكلفن، كما هو محدّد في النطاق بين
config_nightDisplayColorTemperatureMin
و
config_nightDisplayColorTemperatureMax
(كما هو موضّح
في القسم السابق)، وa وb وy-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>
ميزات واجهة المستخدم
بما أنّ ميزة "الإضاءة الليلية" مخصّصة للمستخدمين، يجب أن يتمكّنوا من التحكّم فيها. يتوفّر تطبيق كامل للإعدادات في مشروع Android Open Source (AOSP)
packages/apps/Settings
الذي يمكن لصنّاع الأجهزة الرجوع إليه لتنفيذ الإعدادات. على مُنفّذِي الإعدادات التعامل مع
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
القصد من عرض هذا الإعداد.
الإعدادات
يمكنك العثور على إعدادات ميزة "الإضاءة الليلية" في الإعدادات > الشاشة > الإضاءة
الليلية. من هناك، يمكن للمستخدمين الاطّلاع على مزيد من المعلومات عن ميزة "الإضاءة الليلية" وضبط جدولها الزمني
وتفعيلها أو إيقافها.
- تفعيل الميزة تلقائيًا
- أبدًا: لن يتم تفعيل الإضاءة الليلية تلقائيًا أبدًا،
ويجب تفعيلها باستخدام زر التبديل اليدوي تفعيل / إيقاف.
- جدول زمني مخصّص: يتم تفعيل ميزة "الإضاءة الليلية" في وقت محدّد
وقت البدء [الإعداد التلقائي: 10:30 مساءً] ويتم إيقافها في وقت محدّد
وقت الانتهاء [الإعداد التلقائي: 6:30 صباحًا].
- من غروب الشمس إلى شروقها: يتم تفعيل ميزة "الإضاءة الليلية" عند غروب الشمس وإيقافها عند شروقها. يعتمد وقت شروق الشمس وغروبها على الموقع الجغرافي للجهاز
والوقت من السنة.
- تفعيل / إيقاف: زر تبديل للتحكّم في الحالة الحالية للإضاءة
الليلية تمتثل هذه الحالة للقواعد التلقائية الحالية. على سبيل المثال، إذا تم تفعيل ميزة "الإضاءة
الليلية" في الساعة 5:30 مساءً (قبل أن تفعّلها القاعدة التلقائية
في الساعة 10:30 مساءً)، سيظلّ يتم إيقاف ميزة "الإضاءة الليلية" في الساعة 6:30 صباحًا. وإذا تم إيقاف ميزة "الإضاءة
الليلية" في الساعة 5:30 صباحًا (قبل إيقافها في الساعة 6:30 صباحًا)، سيظلّ يتم إشعالها في الساعة 10:30 مساءً.
- الشدة:
شريط التمرير
الذي يتحكّم في مستوى درجة اللون من الدفء إلى البرودة يمكن
إيقاف شريط التمرير عندما تكون ميزة "الإضاءة الليلية" غير مفعّلة.
- النص المعلوماتي: يعرّف المستخدم على وظيفة "الإضاءة الليلية"
وسبب استخدامها.
الإعدادات الشَرطية
يظهر في أعلى "الإعدادات" عندما تكون ميزة "الإضاءة الليلية" مفعّلة.
مربّع الإعدادات السريعة
يعمل مربّع الإعدادات السريعة بالطريقة نفسها التي يعمل بها زر التبديل تفعيل / إيقاف
في الإعدادات > الشاشة > ضوء الليل.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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*."]]