آماده‌به‌کار تلویزیون

در Android 11، خواب بی‌توجهی ویژگی صرفه‌جویی در انرژی است که به کاربر امکان می‌دهد مهلت زمانی عدم فعالیت تعیین کند و پس‌از آن صفحه‌نمایش خاموش شود، حتی اگر پنجره‌های دارای FLAG_KEEP_SCREEN_ON نمایان باشند یا wakelocks در سطح 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.

منابع برای واسط کاربر هشدار

  • چیدمان کادر گفتگوی هشدار در 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 حاوی پیاده‌سازی واسط کاربر هشدار پیش‌فرض است.
  • 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. تأیید کنید که صفحه پس‌از پایان زمان خاموش شدن تنظیم‌شده خاموش می‌شود.