در 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_titleinattentive_sleep_warning_message
پیکربندیها و منابع زمان ساخت را میتوان با همپوشانیهای منبع تغییر داد.
پیادهسازی
ویژگی را بااستفاده از موارد زیر فعال کنید.
-
config_attentiveTimeoutپیشفرض را ملغی کنید. - اگر از 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نمونهای از نحوه نمایان کردن ویژگی در تنظیمات ارائه میدهد.
مثال مورد آزمون دستی
اگر HAL سلامت دستگاه گزارش دهد که دستگاه باتری دارد (
battery_presenttrueاست)، مطمئن شوید که تنظیم توسعهدهندهstay_on_while_plugged_inخاموش باشد زیرا این امر ممکن است مانع از خاموش شدن صفحهنمایش توسط این ویژگی شود.
adb shell settings put global stay_on_while_plugged_in 0- مهلت زمانی خواب بیتوجهی را چند ثانیه بیشتر از مدت زمان کادر گفتگوی هشدار تنظیم کنید.
adb shell settings put secure attentive_timeout 32000 - پخش ویدیو را شروع کنید (برای دریافت قفل بیداری صفحهنمایش).
- بررسی کنید که کادر گفتگوی هشدار خواب پساز چند ثانیه ظاهر شود.
- تأیید کنید که صفحه پساز پایان زمان خاموش شدن تنظیمشده خاموش میشود.