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

در اندروید ۱۱، حالت خواب بی‌توجهی (inattentive sleep) یک ویژگی صرفه‌جویی در مصرف انرژی است که به کاربر اجازه می‌دهد تا زمان غیرفعال بودن دستگاه را تنظیم کند و پس از آن صفحه نمایش خاموش شود، حتی اگر پنجره‌هایی با 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، مانند One Touch Play
  • شروع دوره جدید بازیگری

سفارشی‌سازی

اگر این ویژگی فعال باشد، دستگاه پس از مدت زمان مشخصی از عدم فعالیت کاربر، یک هشدار روی صفحه نمایش می‌دهد. اگر اقدامی انجام نشود، صفحه نمایش خاموش می‌شود. می‌توانید با استفاده از این گزینه‌های پیکربندی، این ویژگی را سفارشی کنید.

پیکربندی زمان‌بندی

برای پیکربندی زمان انقضا، عنصر زیر را در frameworks/base/core/res/res/values/config.xml به‌روزرسانی کنید:

  • config_attentiveTimeout
    • زمان پیش‌فرض عدم فعالیت کاربر را که پس از آن صفحه نمایش خاموش می‌شود (حتی اگر قفل بیدارباش صفحه نمایش فعال باشد) بر حسب میلی‌ثانیه مشخص می‌کند.
    • در زمان ساخت تنظیم شود.
    • اگر مقدار بین 0 و config_minimumScreenOffTimeout باشد، زمان انقضا روی config_minimumScreenOffTimeout تنظیم می‌شود تا از خاموش شدن صفحه نمایش دستگاه اندکی پس از بیدار شدن جلوگیری شود.
    • پیش‌فرض: -1 ، که این ویژگی را غیرفعال می‌کند.

لغو زمان انقضای پیش‌فرض

برای لغو تنظیم پیش‌فرض timeout، عنصر زیر را به‌روزرسانی کنید.

  • 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. اگر از TvSettings AOSP استفاده می‌کنید:
    • با لغو 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. مطمئن شوید که صفحه نمایش پس از پایان زمان تعیین شده خاموش می‌شود.