ב-Android 11, מצב שינה במקרה של חוסר פעילות הוא תכונה לחיסכון באנרגיה שמאפשרת להגדיר זמן קצוב לתפוגה של חוסר פעילות של משתמשים, שאחריו המסך נכבה, גם אם חלונות עם 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
), כולל, בין היתר:
- אינטראקציה עם מסך המגע
- לחיצה על לחצן פיזי
- אירועי קלט מאביזר חיצוני (לדוגמה, מקלדת מחוברת, שלט Bluetooth, שלט IR)
- אינטראקציה קולית
- קבלת הודעות מסוימות של HDMI CEC, כמו One Touch Play
- התחלת סשן חדש של Cast
התאמה אישית
אם התכונה מופעלת, במכשיר מוצגת אזהרה במסך אחרי פרק זמן מסוים של חוסר פעילות של המשתמש. אם לא תתבצע פעולה, המסך יכבה. אפשר להתאים אישית את התכונה באמצעות אפשרויות ההגדרה האלה.
הגדרת הזמן הקצוב לתפוגה
כדי להגדיר את הזמן הקצוב לתפוגה, מעדכנים את הרכיב הבא בקובץ 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
.
מקורות מידע על ממשק המשתמש של האזהרה
- הפריסה של תיבת הדו-שיח עם האזהרה מוגדרת ב-
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
מכיל את הטמעת ברירת המחדל של ממשק המשתמש של האזהרה.-
packages/apps/TvSettings
מציגה דוגמה לאופן שבו התכונה מוצגת בהגדרות.
דוגמה לתרחיש בדיקה ידני
אם המכשיר מדווח על סוללה (
battery_present
הואtrue
) דרך HAL של מצב המכשיר, צריך לוודא שהגדרת המפתחstay_on_while_plugged_in
מושבתת, כי אחרת יכול להיות שהתכונה לא תכבה את המסך.
adb shell settings put global stay_on_while_plugged_in 0
- מגדירים את משך הזמן הקצוב לתפוגה של שינה לא קשובה לכמה שניות יותר ממשך הזמן של תיבת הדו-שיח של האזהרה.
adb shell settings put secure attentive_timeout 32000
- מפעילים סרטון (כדי לקבל נעילת מסך למניעת שינה).
- מוודאים שתיבת הדו-שיח של אזהרת השינה מופיעה אחרי כמה שניות.
- מוודאים שהמסך נכבה אחרי שחלף הזמן הקצוב שהוגדר.