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