ב-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
- מציין את זמן ברירת המחדל באלפיות שניות של חוסר פעילות של המשתמש שאחריו המסך נכבה (גם אם ישנן נעילות למסך).
- מוגדר בזמן בנייה.
- אם הערך הוא בין
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
מספק דוגמה כיצד לחשוף את התכונה בהגדרות.
דוגמה למקרה מבחן ידני
ודא שהגדרת המפתח
stay_on_while_plugged_in
כבויה אם תקינות ההתקן של המכשיר מדווחת שלמכשיר יש סוללה (battery_present
istrue
) שכן הדבר עלול למנוע מהפיצ'ר לכבות את המסך.
adb shell settings put global stay_on_while_plugged_in 0
- הגדר פסק זמן שינה לא קשוב למספר שניות יותר ממשך הדו-שיח של האזהרה.
adb shell settings put secure attentive_timeout 32000
- התחל להשמיע סרטון (כדי לרכוש wakelock למסך).
- ודא שדו-שיח אזהרת השינה מופיע לאחר מספר שניות.
- ודא שהמסך נכבה לאחר תום הזמן הקצוב שהוגדר.