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

در Android 11، خواب بی‌توجه یک ویژگی صرفه‌جویی در مصرف انرژی است که به کاربر اجازه می‌دهد تا زمان عدم فعالیت کاربر تنظیم شود و پس از آن صفحه خاموش می‌شود، حتی اگر پنجره‌هایی با FLAG_KEEP_SCREEN_ON قابل مشاهده باشند یا wakelock‌های سطح FULL_WAKE_LOCK ، SCREEN_BRIGHT_WAKE_LOCK یا SCREEN_DIM_WAKE_LOCK نگه داشته شوند. Wakelock با سطح 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 (30 ثانیه).

نمایش تنظیمات برگزیده مهلت زمانی در 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. بررسی کنید که صفحه پس از انقضای زمان تعیین شده خاموش شود.