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