ב-Android 11, מצב שינה לא ממוקד הוא תכונת חיסכון באנרגיה שמאפשרת להגדיר זמן קצוב לתפוגה של חוסר פעילות של המשתמש, שאחריו המסך נכבה, גם אם חלונות עם FLAG_KEEP_SCREEN_ON
גלויים או אם חסימות מצב שינה ברמה FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
או SCREEN_DIM_WAKE_LOCK
מוחזקות.
התכונה הזו לא משפיעה על Wakelocks ברמה PARTIAL_WAKE_LOCK
.
קצת לפני שפג התוקף של הזמן הקצוב, יכולה להופיע הודעה שמזהירה את המשתמש שהמכשיר ייכנס למצב שינה אם הוא לא יבצע פעולה כלשהי במכשיר.
בהקשר הזה, 'פעילות משתמש' מתייחסת לכל דבר שמפעיל קריאה ל-PowerManager#userActivity
(ללא הדגל USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
), כולל, בין היתר:
- אינטראקציה עם מסך המגע
- לחיצה על לחצן פיזי
- אירועי קלט מאביזר חיצוני (לדוגמה, מקלדת מחוברת, שלט רחוק Bluetooth, שלט רחוק אינפרה-אדום)
- אינטראקציה קולית
- קבלת הודעות מסוימות של HDMI CEC, כמו One Touch Play
- התחלת סשן העברה חדש
התאמה אישית
אם התכונה מופעלת, תוצג במכשיר אזהרה במסך אחרי פרק זמן מסוים של חוסר פעילות של המשתמש. אם לא תתבצע פעולה, המסך יכבה. אפשר להתאים אישית את התכונה באמצעות אפשרויות ההגדרה האלה.
הגדרת הזמן הקצוב לתפוגה
כדי להגדיר את הזמן הקצוב לתפוגה, מעדכנים את האלמנט הבא ב-frameworks/base/core/res/res/values/config.xml
:
config_attentiveTimeout
- המדיניות מציינת את משך ברירת המחדל (באלפיות שנייה) של חוסר פעילות מצד המשתמש שאחריו המסך נכבה (גם אם יש נעילות מסך).
- מוגדר בזמן ה-build.
- אם הערך הוא בין
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
אפשר לשנות את ההגדרות והמשאבים בזמן ה-build באמצעות שכבות-על של משאבים.
הטמעה
כדי להפעיל את התכונה, מבצעים את הפעולות הבאות.
- שינוי של ברירת המחדל מסוג
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_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
- מתחילים להפעיל סרטון (כדי לקבל את הנעילה של המסך).
- מוודאים שתיבת הדו-שיח עם האזהרה על שינה מופיעה אחרי כמה שניות.
- מוודאים שהמסך נכבה לאחר שתוקף הזמן הקצוב לכיבוי המסך פג.