টিভির স্ট্যান্ডবাই মোড

Android 11-এ, 'মনোযোগহীন স্লিপ' হল একটি পাওয়ার-সেভিং ফিচার যা ব্যবহারকারীকে ইনঅ্যাক্টিভিটি টাইমআউট সেট করতে দেয়, এর পরে স্ক্রিন বন্ধ হয়ে যায়, এমনকি FLAG_KEEP_SCREEN_ON সহ উইন্ডো দেখা গেলেও বা লেভেল FULL_WAKE_LOCK, SCREEN_BRIGHT_WAKE_LOCK বা SCREEN_DIM_WAKE_LOCK এর ওয়েক-লক হোল্ড করা থাকলেও। লেভেল PARTIAL_WAKE_LOCK সহ ওয়েক লক এই ফিচারের দ্বারা প্রভাবিত হয় না। টাইম-আউট শেষ হওয়ার কিছু আগে, একটি মেসেজ দেখানো যেতে পারে যা ব্যবহারকারীকে সতর্ক করে যে ডিভাইসের সাথে ইন্টার‍্যাক্ট না করলে ডিভাইসটি স্লিপ মোডে চলে যাবে।

এই প্রসঙ্গে, ব্যবহারকারীর অ্যাক্টিভিটি বলতে এমন যেকোনও কিছু বোঝায় যা PowerManager#userActivity-এ কল ট্রিগার করে (USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS ফ্ল্যাগ ছাড়া), এর মধ্যে অন্তর্ভুক্ত হল:

  • টাচস্ক্রিনের সাথে ইন্টার‍্যাক্ট করা
  • ফিজিক্যাল বোতাম প্রেস করা
  • এক্সটার্নাল অ্যাক্সেসরি থেকে ইনপুট ইভেন্ট (যেমন, কানেক্ট করা কীবোর্ড, ব্লুটুথ রিমোট, IR রিমোট)
  • ভয়েস ইন্টার‍্যাকশন
  • নির্দিষ্ট কিছু HDMI CEC মেসেজ পাওয়া, যেমন ওয়ান টাচ প্লে
  • নতুন কাস্ট সেশন শুরু করা হচ্ছে

কাস্টমাইজেশন

ফিচারটি চালু করা থাকলে, ব্যবহারকারী নির্দিষ্ট সময় ধরে অ্যাক্টিভ না থাকলে ডিভাইস স্ক্রিনে একটি সতর্কতা দেখায়। কোনও অ্যাকশন না নেওয়া হলে, স্ক্রিন বন্ধ হয়ে যায়। আপনি এই কনফিগারেশন বিকল্প ব্যবহার করে ফিচারটি কাস্টমাইজ করতে পারবেন।

টাইম-আউট কনফিগার করুন

টাইমআউট কনফিগার করতে, frameworks/base/core/res/res/values/config.xml-এ নিম্নলিখিত এলিমেন্ট আপডেট করুন:

  • config_attentiveTimeout
    • ব্যবহারকারী অ্যাক্টিভ না থাকলে কতক্ষণ পরে স্ক্রিন বন্ধ হয়ে যাবে তার ডিফল্ট সময় মিলি সেকেন্ডে উল্লেখ করে (এমনকি স্ক্রিন ওয়েকলক চালু থাকলেও)।
    • বিল্ড টাইমে সেট করা হয়।
    • ভ্যালু 0 ও config_minimumScreenOffTimeout-এর মধ্যে হলে, টাইমআউট config_minimumScreenOffTimeout-এ সেট করা হয় যাতে ডিভাইস স্লিপ মোড থেকে চালু হওয়ার অল্প সময়ের মধ্যে স্ক্রিন বন্ধ না হয়ে যায়।
    • ডিফল্ট: -1, যা এই ফিচার বন্ধ করে দেয়।

ডিফল্ট টাইম-আউট ওভাররাইড করা

ডিফল্ট টাইমআউট সেটিং ওভাররাইড করতে, নিম্নলিখিত এলিমেন্ট আপডেট করুন।

  • Settings.Secure.ATTENTIVE_TIMEOUT
    • সেট করা থাকলে, config_attentiveTimeout-এর মাধ্যমে সেট করা ডিফল্ট ইনঅ্যাটেন্টিভ স্লিপ টাইমআউট ওভাররাইড করে।
    • রানটাইমে সেট করা যেতে পারে।

সতর্কতা দেখানোর আগে কতক্ষণ সময় থাকবে তা কনফিগার করা

সময়সীমা কনফিগার করতে, frameworks/base/core/res/res/values/config.xml-এ নিম্নলিখিত এলিমেন্ট আপডেট করুন:

  • config_attentiveWarningDuration
    • দীর্ঘক্ষণ ব্যবহারকারী অ্যাক্টিভ না থাকার পরে স্ক্রিন বন্ধ হয়ে যাওয়ার আগে ব্যবহারকারীকে কতক্ষণ ধরে সতর্কতা মেসেজ দেখাতে হবে।
    • ভ্যালু সেট করা ইনঅ্যাটেনটিভ স্লিপ টাইমআউটের থেকে অনেক কম হতে হবে, তা না হলে সতর্কতামূলক ডায়ালগ ক্রমাগত দেখানো হবে এবং তা বাতিল করা যাবে না।
    • ডিফল্ট: 30000 (৩০ সেকেন্ড)।

TvSettings-এ টাইম-আউট সংক্রান্ত পছন্দ দেখানো

টাইম-আউট সংক্রান্ত পছন্দ দেখাতে, packages/apps/TvSettings/Settings/res/values/config.xml-এ নিম্নলিখিত এলিমেন্ট আপডেট করুন:

  • config_show_standby_timeout
    • মিডিয়া প্লেব্যাকের সময় স্ক্রিন বন্ধ করার অনুমতি দেওয়ার জন্য কোনও পছন্দসই আইটেম দেখানো হবে কিনা।
    • ডিফল্ট: false.

সতর্কতা UI-এর জন্য রিসোর্স

  • সতর্কতা ডায়ালগের লেআউট frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml-এ সংজ্ঞায়িত করা আছে।
  • ডায়ালগের জন্য নিম্নলিখিত স্ট্রিংগুলি frameworks/base/packages/SystemUI/res/values/strings.xml এবং frameworks/base/packages/SystemUI/res-product/values/strings.xml-এ সংজ্ঞায়িত করা হয়েছে।
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

রিসোর্স ওভারলে ব্যবহার করে বিল্ড টাইম কনফিগারেশন ও রিসোর্স পরিবর্তন করা যেতে পারে।

প্রয়োগ

নিচে উল্লেখ করা পদ্ধতি ব্যবহার করে ফিচারটি চালু করুন।

  1. ডিফল্ট config_attentiveTimeout ওভাররাইড করুন।
  2. AOSP TvSettings ব্যবহার করলে:
    • config_show_standby_timeout ওভাররাইড করে সেটিংস থেকে ফিচারটি বন্ধ করুন।
    • আপনার নিজের সেটিংস প্রয়োগ করুন যা Settings.Secure.ATTENTIVE_TIMEOUT সেট করে।

যাচাইকরণ

ফিচারের জন্য CTS পরীক্ষাগুলি cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java-এ আছে।

উদাহরণ ও সোর্স

  • frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java -এ ডিফল্ট সতর্কতা UI প্রয়োগ করা আছে।
  • packages/apps/TvSettings সেটিংসের মধ্যে কীভাবে ফিচারটি এক্সপোজ করতে হয় তার একটি উদাহরণ দেয়।

ম্যানুয়াল টেস্ট কেসের উদাহরণ

  1. ডিভাইসের হেলথ HAL যদি রিপোর্ট করে যে ডিভাইসে ব্যাটারি আছে (battery_present হল true), তাহলে stay_on_while_plugged_in ডেভেলপার সেটিং বন্ধ আছে কিনা তা নিশ্চিত করুন, কারণ এটি ফিচারটিকে স্ক্রিন বন্ধ করা থেকে আটকাতে পারে।
    adb shell settings put global stay_on_while_plugged_in 0

  2. সতর্কতা ডায়ালগের সময়সীমার চেয়ে কয়েক সেকেন্ড বেশি সময় ধরে ইনঅ্যাটেন্টিভ স্লিপ টাইমআউট সেট করুন।
    adb shell settings put secure attentive_timeout 32000
  3. ভিডিও প্লেব্যাক শুরু করুন (স্ক্রিন ওয়েকলক পেতে)।
  4. কয়েক সেকেন্ড পরে স্লিপ সংক্রান্ত সতর্কতার ডায়ালগ দেখা যাচ্ছে কিনা তা যাচাই করুন।
  5. সেট করা টাইমআউট শেষ হওয়ার পরে স্ক্রিন বন্ধ হয়ে যাচ্ছে কিনা তা যাচাই করুন।