रात्रि प्रकाश लागू करें

शोध से पता चलता है कि स्क्रीन से निकलने वाली नीली रोशनी नींद पर नकारात्मक प्रभाव डाल सकती है। एंड्रॉइड 7.1.1 ने नाइट लाइट नामक एक सुविधा पेश की जो उपयोगकर्ता के दिन और स्थान के समय की प्राकृतिक रोशनी से बेहतर मिलान करने के लिए डिवाइस डिस्प्ले द्वारा उत्सर्जित नीली रोशनी की मात्रा को कम कर देती है। एंड्रॉइड 8.0 ने एक अतिरिक्त सुविधा पेश की जो उपयोगकर्ताओं को नाइट लाइट प्रभाव की तीव्रता पर अधिक नियंत्रण प्रदान करती है। एंड्रॉइड 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 द्वारा समर्थित) द्वारा नियंत्रित की जाती है।

डिवाइस निर्माताओं को सफेद बिंदु, सरगम ​​और वांछित रंग सहित डिवाइस के डिस्प्ले पैनल की विशेषताओं के आधार पर रंग रैंप को अनुकूलित करना चाहिए। आप कॉन्फ़िगरेशन ओवरले का उपयोग करके आधार कार्यान्वयन को बदले बिना रंग रैंप बदल सकते हैं। इस विन्यास को लाल, हरे और नीले रंग में से प्रत्येक के लिए एक द्विघात समीकरण के रूप में व्यक्त किया गया है, v res = v a t 2 + v b t + v y-int जहां t केल्विन में तापमान इनपुट है, जैसा कि में निर्दिष्ट है config_nightDisplayColorTemperatureMin और config_nightDisplayColorTemperatureMax (जैसा कि पिछले अनुभाग में वर्णित है) के बीच की सीमा, और v a , v b , और v 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>

यूआई सुविधाएँ

क्योंकि नाइट लाइट एक उपयोगकर्ता-सामना वाली सुविधा है, इसलिए उपयोगकर्ताओं को इसे नियंत्रित करने में सक्षम होना चाहिए। एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) पैकेज/ऐप्स/सेटिंग्स प्रोजेक्ट में सेटिंग्स का पूर्ण कार्यान्वयन है जिसे डिवाइस निर्माता अपनी सेटिंग्स कार्यान्वयन के लिए संदर्भित कर सकते हैं। कार्यान्वयनकर्ताओं को इस सेटिंग को उजागर करने के लिए Settings.ACTION_NIGHT_DISPLAY_SETTINGS इरादे को संभालना होगा।

समायोजन

नाइट लाइट की सेटिंग सेटिंग्स > डिस्प्ले > नाइट लाइट में हैं। वहां से, उपयोगकर्ता नाइट लाइट के बारे में जान सकते हैं, उसका शेड्यूल सेट कर सकते हैं और उसे चालू या बंद कर सकते हैं।

  • स्वचालित रूप से चालू करें
    • कभी नहीं: नाइट लाइट कभी भी स्वचालित रूप से चालू नहीं होगी और इसे मैन्युअल ऑन/ऑफ टॉगल के साथ सक्रिय किया जाना चाहिए।
    • कस्टम शेड्यूल: नाइट लाइट एक निर्दिष्ट प्रारंभ समय पर चालू होती है [डिफ़ॉल्ट: 10:30 अपराह्न] और एक निर्दिष्ट समाप्ति समय पर बंद होती है [डिफ़ॉल्ट: 6:30 पूर्वाह्न]।
    • सूर्यास्त से सूर्योदय तक: रात्रि प्रकाश सूर्यास्त के समय चालू होता है और सूर्योदय के समय बंद हो जाता है। सूर्योदय और सूर्यास्त का समय उपकरण के स्थान और वर्ष के समय पर निर्भर करता है।
  • चालू / बंद: टॉगल जो नाइट लाइट की वर्तमान स्थिति को नियंत्रित करता है। यह राज्य मौजूदा स्वचालित नियमों का सम्मान करता है. उदाहरण के लिए, यदि नाइट लाइट को शाम 5:30 बजे चालू किया जाता है (इससे पहले कि स्वचालित नियम इसे रात 10:30 बजे चालू करता), नाइट लाइट अभी भी सुबह 6:30 बजे बंद हो जाएगी और यदि नाइट लाइट को 5 बजे बंद कर दिया जाता है :30 पूर्वाह्न (सुबह 6:30 बजे बंद होने से पहले), यह अभी भी रात 10:30 बजे चालू होगा
  • तीव्रता: सीकबार जो गर्म से ठंडे की ओर सरककर टिंट स्तर को नियंत्रित करता है। नाइट लाइट सक्रिय न होने पर सीकबार को अक्षम किया जा सकता है।
  • सूचनात्मक पाठ: उपयोगकर्ता को सिखाता है कि नाइट लाइट क्या करती है और क्यों करती है।

सेटिंग्स सशर्त

नाइट लाइट चालू होने पर सेटिंग्स के शीर्ष पर दिखाई देता है।

त्वरित सेटिंग्स टाइल

त्वरित सेटिंग्स टाइल सेटिंग्स > डिस्प्ले > नाइट लाइट में ऑन/ऑफ टॉगल के समान व्यवहार करती है।