ב-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, שלט רחוק ב-IR)
- אינטראקציה קולית
- קבלת הודעות מסוימות של 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
- מתחילים להפעיל סרטון (כדי לקבל את הנעילה של המסך).
- מוודאים שתיבת הדו-שיח עם האזהרה על שינה מופיעה אחרי כמה שניות.
- מוודאים שהמסך נכבה לאחר שתוקף הזמן הקצוב לכיבוי פג.