টিভি স্ট্যান্ডবাই

অ্যান্ড্রয়েড ১১-এ, ইনঅ্যাটেন্টিভ স্লিপ হলো একটি পাওয়ার-সেভিং ফিচার যা ব্যবহারকারীকে একটি নির্দিষ্ট সময় পর্যন্ত নিষ্ক্রিয় থাকার সুযোগ দেয়। এই সময় শেষ হওয়ার পর স্ক্রিন বন্ধ হয়ে যায়, এমনকি যদি 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 ফ্ল্যাগ ছাড়া) কল করে, যার মধ্যে অন্তর্ভুক্ত কিন্তু সীমাবদ্ধ নয়:

  • টাচস্ক্রিনের সাথে মিথস্ক্রিয়া
  • একটি ভৌত ​​বোতাম টিপে
  • বাহ্যিক অ্যাক্সেসরি থেকে প্রাপ্ত ইনপুট ইভেন্ট (যেমন, সংযুক্ত কীবোর্ড, ব্লুটুথ রিমোট, আইআর রিমোট)
  • ভয়েস ইন্টারঅ্যাকশন
  • কিছু 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. নির্ধারিত টাইমআউট শেষ হওয়ার পর স্ক্রিনটি বন্ধ হয়ে যায় কিনা, তা যাচাই করুন।