टीवी का स्टैंडबाय मोड

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 जैसे कुछ एचडीएमआई सीईसी मैसेज पाना
  • नया कास्ट सेशन शुरू करना

पसंद के मुताबिक बनाएं

अगर यह सुविधा चालू है, तो डिवाइस पर उपयोगकर्ता के कुछ समय तक ऐक्टिव न रहने पर, स्क्रीन पर चेतावनी दिखती है. अगर कोई कार्रवाई नहीं की जाती है, तो स्क्रीन बंद हो जाती है. कॉन्फ़िगरेशन के इन विकल्पों का इस्तेमाल करके, इस सुविधा को अपनी पसंद के मुताबिक बनाया जा सकता है.

टाइम आउट कॉन्फ़िगर करना

टाइम आउट कॉन्फ़िगर करने के लिए, 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

रिसॉर्स ओवरले की मदद से, बिल्ड टाइम कॉन्फ़िगरेशन और रिसॉर्स बदले जा सकते हैं.

लागू करना

इस सुविधा को चालू करने के लिए, यह तरीका अपनाएं.

  1. डिफ़ॉल्ट config_attentiveTimeout को बदलें.
  2. AOSP 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 में, सेटिंग में सुविधा को दिखाने का उदाहरण दिया गया है.

मैन्युअल टेस्ट केस का उदाहरण

  1. अगर डिवाइस के हेल्थ एचएएल से पता चलता है कि डिवाइस में बैटरी है (battery_present true है), तो पक्का करें कि stay_on_while_plugged_in डेवलपर सेटिंग बंद हो. ऐसा इसलिए, क्योंकि इससे इस सुविधा की मदद से स्क्रीन बंद नहीं हो पाएगी.
    adb shell settings put global stay_on_while_plugged_in 0

  2. डिवाइस के इस्तेमाल में ध्यान न देने की वजह से स्लीप मोड में जाने की समयसीमा, चेतावनी वाले डायलॉग बॉक्स की अवधि से कुछ सेकंड ज़्यादा होनी चाहिए.
    adb shell settings put secure attentive_timeout 32000
  3. स्क्रीन वॉकलॉक पाने के लिए, कोई वीडियो चलाएं.
  4. पुष्टि करें कि कुछ सेकंड बाद, स्लीप मोड की चेतावनी वाला डायलॉग दिखता है.
  5. पुष्टि करें कि सेट किए गए टाइम आउट की समयसीमा खत्म होने के बाद, स्क्रीन बंद हो जाती है.