নাইট লাইট প্রয়োগ করা

গবেষণা থেকে জানা যায় যে স্ক্রিন থেকে নির্গত নীল আলো ঘুমের উপর নেতিবাচক প্রভাব ফেলতে পারে। Android 7.1.1-এ নাইট লাইট নামে একটি ফিচার চালু করা হয়েছে যা ডিভাইসের ডিসপ্লে থেকে নির্গত নীল আলোর পরিমাণ কম করে যাতে ব্যবহারকারীর দিনের সময় ও লোকেশনের প্রাকৃতিক আলোর সাথে আরও ভালোভাবে ম্যাচ করতে পারে। Android 8.0-এ একটি অতিরিক্ত ফিচার যোগ করা হয়েছে যার মাধ্যমে ব্যবহারকারীরা নাইট লাইট এফেক্টের তীব্রতা আরও ভালোভাবে নিয়ন্ত্রণ করতে পারবেন। Android 10-এ COLOR_DISPLAY_SERVICE সিস্টেম সার্ভিস চালু করা হয়েছে, যার মধ্যে সিস্টেম API সারফেস রয়েছে। এর ফলে সিস্টেম, সেটিংস ও সিস্টেম UI-কে নাইট লাইট সহ সব কালার ট্রান্সফর্মের উপর আরও বেশি কন্ট্রোল দেওয়া যায়।

নাইট লাইটের জন্য হার্ডওয়্যার কম্পোজার 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>

কোডটি ফ্রেমওয়ার্ক, সিস্টেম সার্ভিস, সিস্টেম 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 ওপেন সোর্স প্রোজেক্ট (AOSP) packages/apps/Settings প্রোজেক্টে সেটিংসের সম্পূর্ণ প্রয়োগ রয়েছে যা ডিভাইস প্রস্তুতকারকরা তাদের সেটিংস প্রয়োগের জন্য রেফারেন্স হিসেবে ব্যবহার করতে পারেন। এই সেটিং দেখানোর জন্য ইমপ্লিমেন্টারদের অবশ্যই Settings.ACTION_NIGHT_DISPLAY_SETTINGS ইনটেন্ট ম্যানেজ করতে হবে।

সেটিংস

সেটিংস > ডিসপ্লে > নাইট লাইট বিকল্পে নাইট লাইটের সেটিংস আছে। সেখান থেকে, ব্যবহারকারীরা নাইট লাইট সম্পর্কে জানতে, এর শিডিউল সেট করতে এবং এটি চালু বা বন্ধ করতে পারবেন।

  • অটোমেটিক চালু করুন
    • কখনও নয়: নাইট লাইট কখনও অটোমেটিক চালু হবে না এবং ম্যানুয়াল চালু / বন্ধ টগল ব্যবহার করে চালু করতে হবে।
    • কাস্টম শিডিউল: নাইট লাইট নির্দিষ্ট শুরু হওয়ার সময় [ডিফল্ট: রাত ১০:৩০] এবং নির্দিষ্ট শেষ হওয়ার সময় [ডিফল্ট: সকাল ৬:৩০]-এ চালু ও বন্ধ হয়।
    • সূর্যাস্ত থেকে সূর্যোদয়: সূর্যাস্তের সময় নাইট লাইট চালু হয় এবং সূর্যোদয়ের সময় বন্ধ হয়। সূর্যোদয় ও সূর্যাস্তের সময় ডিভাইসের লোকেশন ও বছরের সময়ের উপর নির্ভর করে।
  • চালু / বন্ধ: নাইট লাইটের বর্তমান অবস্থা কন্ট্রোল করে এমন টগল বিকল্প। এই স্ট্যাটাস আগে থেকে থাকা অটোমেটিক নিয়ম মেনে চলে। যেমন, নাইট লাইট যদি বিকেল ৫:৩০-এ টগল করে চালু করা হয় (অটোমেটিক নিয়ম অনুযায়ী রাত ১০:৩০-এ চালু হওয়ার আগে), 'নাইট লাইট' এখনও সকাল ৬:৩০টায় বন্ধ হয়ে যাবে। আর যদি 'নাইট লাইট' সকাল ৬:৩০টায় বন্ধ হওয়ার আগে সকাল ৫:৩০টায় টগল করে বন্ধ করা হয়, তাহলে এটি এখনও রাত ১০:৩০টায় চালু হবে।
  • তীব্রতা: স্লাইডার যা উষ্ণ থেকে শীতল পর্যন্ত স্লাইড করে টিংট লেভেল নিয়ন্ত্রণ করে। 'নাইট লাইট' চালু না থাকলে সিকবার বন্ধ করা যেতে পারে।
  • তথ্যমূলক টেক্সট: নাইট লাইট কী করে এবং কেন করে তা ব্যবহারকারীকে শেখায়।

শর্তসাপেক্ষ সেটিংস

নাইট লাইট চালু থাকলে সেটিংসের উপরে দেখা যায়।

দ্রুত সেটিংস টাইল

দ্রুত সেটিংস টাইলটি সেটিংস > ডিসপ্লে > নাইট লাইট-এ থাকা চালু / বন্ধ টগল বোতামের মতোই কাজ করে।