تفعيل الإضاءة الليلية

تشير الأبحاث إلى أنّ الضوء الأزرق المنبعث من الشاشات يمكن أن يؤثر سلبًا في النوم. طرح نظام 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 مساءً.
  • الشدة: شريط التمرير الذي يتحكّم في مستوى درجة اللون من الدفء إلى البرودة يمكن إيقاف شريط التمرير عندما تكون ميزة "الإضاءة الليلية" غير مفعّلة.
  • النص المعلوماتي: يعرّف المستخدم على وظيفة "الإضاءة الليلية" وسبب استخدامها.

الإعدادات الشَرطية

يظهر في أعلى "الإعدادات" عندما تكون ميزة "الإضاءة الليلية" مفعّلة.

مربّع الإعدادات السريعة

يعمل مربّع الإعدادات السريعة بالطريقة نفسها التي يعمل بها زر التبديل تفعيل / إيقاف في الإعدادات > الشاشة > ضوء الليل.