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

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 के बिना) को कॉल ट्रिगर करती है. इनमें ये शामिल हैं, लेकिन इन तक सीमित नहीं हैं:

  • टचस्क्रीन का इस्तेमाल करना
  • किसी बटन को दबाकर
  • किसी बाहरी ऐक्सेसरी से इवेंट इनपुट करें. उदाहरण के लिए, कनेक्ट किया गया कीबोर्ड, ब्लूटूथ रिमोट, IR रिमोट)
  • वॉइस इंटरैक्शन
  • कुछ एचडीएमआई सीईसी मैसेज पाना, जैसे कि 'वन टच प्ले' सुविधा
  • नया कास्ट सेशन शुरू करना

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

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

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

टाइम आउट को कॉन्फ़िगर करने के लिए, यहां दिए गए एलिमेंट को अपडेट करें 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. अगर एओएसपी 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. पक्का करें कि stay_on_while_plugged_in अगर डिवाइस का हेल्थ एचएएल यह बताता है कि डिवाइस में बैटरी (battery_present true है) क्योंकि इससे बैटरी को बंद करने की सुविधा भी देता है.
    adb shell settings put global stay_on_while_plugged_in 0

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