टीवी स्टैंडबाय

एंड्रॉइड 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

निर्माण समय कॉन्फ़िगरेशन और संसाधनों को संसाधन ओवरले द्वारा बदला जा सकता है।

कार्यान्वयन

निम्नलिखित का उपयोग करके सुविधा को सक्षम करें।

  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 डिफ़ॉल्ट चेतावनी UI कार्यान्वयन शामिल है।
  • 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. सत्यापित करें कि सेट टाइमआउट समाप्त होने के बाद स्क्रीन बंद हो जाती है।