تشير الأبحاث إلى أن الضوء الأزرق الصادر من الشاشات يمكن أن يكون له تأثير سلبي على
نوم قدم Android 7.1.1 ميزة تسمى "الإضاءة الليلية" وهي تقلل من
مقدار الضوء الأزرق المنبعث من شاشة الجهاز ليتناسب بشكل أفضل مع
ضوء وقت المستخدم وموقعه. لقد قدّم Android 8.0 ميزة إضافية
التي تمنح المستخدمين مزيدًا من التحكم في شدة تأثير "الإضاءة الليلية".
يقدّم Android 10
خدمة نظام COLOR_DISPLAY_SERVICE
، مع واجهة برمجة تطبيقات للنظام
السطح لمنح النظام والإعدادات وواجهة مستخدم النظام مزيدًا من التحكم في جميع الألوان
المختلفة، بما في ذلك الإضاءة الليلية.
تتطلب ميزة "الإضاءة الليلية"
الأجهزة
تنفيذ 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
(كما هو موضّح
في القسم السابق)، وva وvb وvy-int هي
للمعامل a ومعامل ب وتقاطع ص على التوالي لمنحنى العنصر الأساسي المحدد،
كما هو موضح أدناه.
<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.
مشروع (AOSP)
الحِزم/التطبيقات/الإعدادات
المشروع الذي يمكن للشركات المصنّعة للأجهزة الرجوع إليه في "الإعدادات"
التنفيذ. يجب أن يتعامل القائمون التنفيذيون مع
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
نية عرض هذا الإعداد.
الإعدادات
تتوفر إعدادات "الإضاءة الليلية" في الإعدادات >. الشاشة > المساء خفيف: من هناك، يمكن للمستخدمين التعرف على ميزة "إضاءة ليلية" وضبط جدولها وتشغيله أو إيقافها.
- التفعيل تلقائيًا
- أبدًا: لن يتم تشغيل "الإضاءة الليلية" تلقائيًا مطلقًا أن يتم تنشيطها باستخدام مفتاح التبديل اليدوي تشغيل / إيقاف.
- جدول زمني مخصّص: يتم تشغيل "الإضاءة الليلية" في وقت محدّد. وقت البدء [تلقائي: 10:30 مساءً] وإيقافه في وقت محدّد وقت الانتهاء [تلقائي: 6:30 صباحًا].
- من غروب الشمس إلى شروقها: يتم تشغيل "الإضاءة الليلية" عند غروب الشمس وإيقافها. عند شروق الشمس. يعتمد وقت الشروق والغروب على الموقع الجغرافي للجهاز. والوقت من السنة.
- تفعيل / إيقاف: التبديل الذي يتحكّم في الوضع الحالي للوضع الليلي خفيف. تلتزم هذه الحالة بالقواعد التلقائية الحالية. على سبيل المثال، إذا كانت الليل الْمِصْبَاحْ مُفَعَّلْ فِي السَّاعَة 5:30 مَسَاءً. (قبل أن يتم تشغيل القاعدة التلقائية 10:30 مساءً)، ستظل ميزة "الإضاءة الليلية" مطفأة في الساعة 6:30 صباحًا، وحتى في حال الليل. يتم إيقاف الإضاءة في الساعة 5:30 صباحًا (قبل أن تنطفئ في الساعة 6:30 صباحًا)، وسيتم إيقافها قيد التشغيل في الساعة 10:30 مساءً.
- الكثافة: شريط التمرير التي تتحكم في مستوى اللون عن طريق الانتقال من الدافئة إلى البرودة. يمكن ضبط شريط التمرير على يتم إيقافها في حال عدم تفعيل "الإضاءة الليلية".
- نص معلوماتي: يشرح المستخدم طريقة عمل "الإضاءة الليلية". ولماذا.
إعدادات شَرطية
تظهر هذه الميزة في أعلى "الإعدادات" عندما تكون ميزة "الإضاءة الليلية" مفعّلة.
مربّع "الإعدادات السريعة"
يعمل مربّع "الإعدادات السريعة" تمامًا مع حالة تشغيل / إيقاف التبديل في الإعدادات > الشاشة > الإضاءة الليلية: