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