در 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
تنظیمات و منابع زمان ساخت را می توان با همپوشانی منابع تغییر داد.
پیاده سازی
این ویژگی را با استفاده از موارد زیر فعال کنید.
-
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شامل اجرای پیشفرض UI هشدار است. -
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 - پخش یک ویدیو را شروع کنید (برای به دست آوردن قفل صفحه نمایش).
- بررسی کنید که کادر گفتگوی هشدار خواب پس از چند ثانیه ظاهر شود.
- بررسی کنید که صفحه پس از انقضای زمان تعیین شده خاموش شود.