एंड्रॉइड 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
ध्वज के बिना) पर कॉल ट्रिगर करती है, जिसमें शामिल है, लेकिन इन्हीं तक सीमित नहीं है:
- टचस्क्रीन के साथ इंटरैक्ट करना
- एक भौतिक बटन दबाना
- बाहरी एक्सेसरी से इनपुट इवेंट (उदाहरण के लिए, कनेक्टेड कीबोर्ड, ब्लूटूथ रिमोट, आईआर रिमोट)
- आवाज बातचीत
- कुछ एचडीएमआई सीईसी संदेश प्राप्त हो रहे हैं, जैसे वन टच प्ले
- एक नया कास्ट सत्र प्रारंभ हो रहा है
अनुकूलन
यदि सुविधा सक्षम है, तो उपयोगकर्ता की निष्क्रियता के एक निर्दिष्ट समय के बाद डिवाइस ऑनस्क्रीन चेतावनी दिखाता है। यदि कोई कार्रवाई नहीं की जाती है, तो स्क्रीन बंद हो जाती है। आप इन कॉन्फ़िगरेशन विकल्पों का उपयोग करके सुविधा को अनुकूलित कर सकते हैं।
टाइमआउट कॉन्फ़िगर करें
टाइमआउट को कॉन्फ़िगर करने के लिए, निम्न तत्व को 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
(30s)।
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
.ATTENTIVE_TIMEOUT सेट करने वाली अपनी स्वयं की सेटिंग्स लागू करें।
मान्यकरण
सुविधा के लिए सीटीएस परीक्षण cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
पर हैं।
उदाहरण और स्रोत
-
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
में डिफ़ॉल्ट चेतावनी UI कार्यान्वयन शामिल है। -
packages/apps/TvSettings
सेटिंग्स में फीचर को कैसे प्रदर्शित किया जाए इसका एक उदाहरण प्रदान करता है।
मैन्युअल परीक्षण केस उदाहरण
सुनिश्चित करें कि यदि डिवाइस का स्वास्थ्य एचएएल रिपोर्ट करता है कि डिवाइस में बैटरी है (
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
- एक वीडियो चलाना प्रारंभ करें (स्क्रीन वैकलॉक प्राप्त करने के लिए)।
- सत्यापित करें कि नींद चेतावनी संवाद कुछ सेकंड के बाद दिखाई देता है।
- सत्यापित करें कि सेट टाइमआउट समाप्त होने के बाद स्क्रीन बंद हो जाती है।