विंडो मैनेजर एक्सटेंशन

जेटपैक विंडोमैनेजर लाइब्रेरी एप्लिकेशन डेवलपर्स को नए डिवाइस फॉर्म फैक्टर और मल्टी-विंडो वातावरण का समर्थन करने में सक्षम बनाती है।

विंडोमैनेजर एक्सटेंशन (एक्सटेंशन) एक ऑप्ट-इन एंड्रॉइड प्लेटफ़ॉर्म मॉड्यूल है जो विभिन्न जेटपैक विंडोमैनेजर सुविधाओं को सक्षम करता है। मॉड्यूल को एओएसपी में frameworks/base/libs/WindowManager/Jetpack में कार्यान्वित किया जाता है और विंडोमैनेजर सुविधाओं का समर्थन करने वाले उपकरणों पर भेजा जाता है।

एक्सटेंशन मॉड्यूल वितरण

यदि डिवाइस मेकफ़ाइल में एक्सटेंशन सक्षम हैं तो एक्सटेंशन को .jar लाइब्रेरी में संकलित किया जाता है और डिवाइस पर system_ext विभाजन में रखा जाता है।

किसी डिवाइस पर एक्सटेंशन सक्षम करने के लिए, उत्पाद डिवाइस मेकफ़ाइल में निम्नलिखित जोड़ें:

$(call inherit-product, $(SRC_TARGET_DIR)/product/window_extensions.mk)

यह डिवाइस पर androidx.window.extensions और androidx.window.sidecar पैकेज को सक्षम करता है और persist.wm.extensions.enabled प्रॉपर्टी सेट करता है। मेकफ़ाइल में इन पैकेजों को शामिल करने से etc/permissions/ में घोषणाएं भी होती हैं, जिससे वे एप्लिकेशन प्रक्रियाओं के लिए उपलब्ध हो जाते हैं। आम तौर पर जेटपैक विंडोमैनेजर लाइब्रेरी द्वारा उपयोग किए जाने पर मॉड्यूल को रनटाइम पर एप्लिकेशन प्रक्रिया के हिस्से के रूप में लोड और निष्पादित किया जाता है, जो इसके संचालन को क्लाइंट-साइड फ्रेमवर्क कोड के समान बनाता है, जैसा कि निम्नलिखित चित्र में दिखाया गया है:

चित्र 1. विंडोमैनेजर एक्सटेंशन को प्लेटफ़ॉर्म कोड के समान एप्लिकेशन प्रक्रिया में लोड किया गया है।

androidx.window.extensions मॉड्यूल सक्रिय विकास के तहत वर्तमान एक्सटेंशन मॉड्यूल है। androidx.window.sidecar मॉड्यूल एक विरासत मॉड्यूल है जिसे जेटपैक विंडोमैनेजर के शुरुआती संस्करणों के साथ संगतता के लिए शामिल किया गया है, लेकिन साइडकार अब सक्रिय रूप से बनाए नहीं रखा गया है।

निम्नलिखित आंकड़ा androidx.window.extensions या androidx.window.sidecar के उपयोग को निर्धारित करने के लिए तर्क दिखाता है।

चित्र 2. androidx.window.extensions या androidx.window.sidecar तक पहुँचने के लिए निर्णय वृक्ष।

एक्सटेंशन मॉड्यूल

एक्सटेंशन फोल्डेबल बड़ी स्क्रीन वाले उपकरणों और बाहरी डिस्प्ले पर विंडोिंग का समर्थन करने वाले उपकरणों के लिए विंडोिंग सुविधाएँ प्रदान करते हैं। फ़ीचर क्षेत्रों में शामिल हैं:

यदि डिवाइस हार्डवेयर संबंधित सुविधाओं का समर्थन नहीं करता है, जब तक कि संगतता परिभाषा दस्तावेज़ (सीडीडी) 7.1.1.1 में विशेष रूप से अनुरोध नहीं किया जाता है, एक्सटेंशन के ओईएम कार्यान्वयन WindowExtensions इंटरफ़ेस में विधियों के डिफ़ॉल्ट या स्टब कार्यान्वयन के साथ शून्य घटक या घटक प्रदान कर सकते हैं। .

एक्सटेंशन और जेटपैक एपीआई

विंडोमैनेजर एक्सटेंशन मॉड्यूल सार्वजनिक प्लेटफ़ॉर्म एपीआई के अलावा अपनी स्वयं की एपीआई सतह प्रदान करता है। एक्सटेंशन मॉड्यूल को गैर-डेवलपर-फेसिंग androidx.window.extensions जेटपैक लाइब्रेरी में सार्वजनिक रूप से विकसित किया गया है, ताकि जेटपैक विंडोमैनेजर ( androidx.window ) संकलन समय पर इसके विरुद्ध लिंक कर सके। एक्सटेंशन एपीआई सतह आम तौर पर निचले स्तर के एपीआई प्रदान करती है।

एक्सटेंशन जो एपीआई प्रदान करते हैं उनका उपयोग केवल जेटपैक विंडोमैनेजर लाइब्रेरी द्वारा किया जाता है। एक्सटेंशन एपीआई सीधे एप्लिकेशन डेवलपर्स द्वारा कॉल किए जाने के लिए नहीं हैं। सही कार्यक्षमता सुनिश्चित करने के लिए एक्सटेंशन लाइब्रेरी को ग्रैडल बिल्ड फ़ाइल में किसी एप्लिकेशन के लिए निर्भरता के रूप में नहीं जोड़ा जाना चाहिए। एक्सटेंशन लाइब्रेरी को सीधे किसी एप्लिकेशन में पूर्व-संकलित करने से बचें; इसके बजाय, पूर्व-संकलित और रनटाइम-प्रदत्त एक्सटेंशन कक्षाओं के मिश्रण को लोड करने की स्थिति को रोकने के लिए रनटाइम लोडिंग पर भरोसा करें।

जेटपैक विंडोमैनेजर ( androidx.window ) को एक एप्लिकेशन निर्भरता के रूप में जोड़ा जाना है और यह विंडोमैनेजर एक्सटेंशन सुविधाओं सहित सार्वजनिक डेवलपर-सामना करने वाले एपीआई प्रदान करता है। विंडोमैनेजर लाइब्रेरी स्वचालित रूप से एक्सटेंशन को एप्लिकेशन प्रक्रिया में लोड करती है और निचले स्तर के एक्सटेंशन एपीआई को उच्च स्तर के एब्स्ट्रैक्शन और अधिक केंद्रित इंटरफेस में लपेटती है। विंडोमैनेजर जेटपैक एपीआई आधुनिक एंड्रॉइड एप्लिकेशन डेवलपमेंट के मानकों का पालन करते हैं और अन्य एंड्रॉइडएक्स लाइब्रेरीज़ का उपयोग करने वाले कोडबेस के साथ अच्छी तरह से एकीकृत करके सुविधाजनक इंटरऑपरेबिलिटी प्रदान करते हैं।

एक्सटेंशन संस्करण और अद्यतन

एक्सटेंशन मॉड्यूल को एंड्रॉइड प्लेटफ़ॉर्म के वार्षिक या त्रैमासिक अपडेट के साथ अपडेट किया जा सकता है। त्रैमासिक अपडेट एंड्रॉइड प्लेटफ़ॉर्म एपीआई अपडेट के बीच एक्सटेंशन एपीआई स्तर को बढ़ाने में सक्षम बनाता है, जिससे त्वरित पुनरावृत्ति की अनुमति मिलती है और ओईएम को हार्डवेयर लॉन्च के करीब नई सुविधाओं के लिए आधिकारिक एपीआई पहुंच जोड़ने का अवसर मिलता है।

निम्न तालिका विभिन्न एंड्रॉइड रिलीज़ के लिए androidx.window.extensions API संस्करणों को सूचीबद्ध करती है।

एंड्रॉइड प्लेटफ़ॉर्म संस्करण विंडोमैनेजर एक्सटेंशन एपीआई स्तर androidx.window.extensions एपीआई संस्करण
एंड्रॉइड 14 3 1.2.0
एंड्रॉइड 13 QPR3 2 1.1.0
एंड्रॉइड 13 1 1.0.0
एंड्रॉइड 12एल 1 1.0.0

एक्सटेंशन एपीआई स्तर (केंद्र स्तंभ) हर बार मौजूदा स्थिर एपीआई सतह (दायां कॉलम) में वृद्धि होने पर बढ़ जाता है।

पीछे और आगे की अनुकूलता

जेटपैक विंडोमैनेजर लगातार एपीआई स्तर अपडेट, तेज़ एपीआई विकास और बैकवर्ड संगतता से निपटने की जटिलता को संभालता है। जब एप्लिकेशन प्रक्रिया में लाइब्रेरी कोड निष्पादित होता है, तो लाइब्रेरी घोषित एक्सटेंशन एपीआई स्तर की जांच करती है और घोषित स्तर के अनुसार सुविधाओं तक पहुंच प्रदान करती है।

किसी एप्लिकेशन को रनटाइम पर क्रैश होने से बचाने के लिए, विंडोमैनेजर घोषित एक्सटेंशन एपीआई स्तर के अनुसार उपलब्ध एक्सटेंशन एपीआई का रनटाइम जावा प्रतिबिंब जांच भी करता है। यदि कोई बेमेल है, तो विंडोमैनेजर एक्सटेंशन के उपयोग को (आंशिक रूप से या पूरी तरह से) अक्षम कर सकता है और प्रासंगिक सुविधाओं को एप्लिकेशन के लिए उपलब्ध नहीं होने की रिपोर्ट कर सकता है।

विंडोमैनेजर एक्सटेंशन को एक system_ext मॉड्यूल के रूप में कार्यान्वित किया जाता है जो एक्सटेंशन सुविधाओं के कार्यान्वयन में विंडोमैनेजर कोर, DeviceStateManager और अन्य सिस्टम सेवाओं में कॉल करने के लिए निजी प्लेटफ़ॉर्म एपीआई का उपयोग करता है।

संबंधित त्रैमासिक या वार्षिक एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ से पहले एक्सटेंशन के प्री-रिलीज़ संस्करणों के साथ संगतता बनाए नहीं रखी जा सकती है, जिसके साथ संस्करणों को अंतिम रूप दिया जाता है। एक्सटेंशन एपीआई का पूरा इतिहास रिलीज शाखा window:extensions:extensions एपीआई टेक्स्ट फाइलों में पाया जा सकता है।

एक्सटेंशन के नए संस्करणों को आगे की अनुकूलता बनाए रखने के लिए अनुप्रयोगों में संकलित विंडोमैनेजर के पुराने संस्करणों के साथ काम करना जारी रखना चाहिए। यह सुनिश्चित करने के लिए, एक्सटेंशन एपीआई का कोई भी नया संस्करण केवल नए एपीआई जोड़ता है और पुराने एपीआई को नहीं हटाता है। परिणामस्वरूप, पुराने विंडोमैनेजर संस्करणों वाले एप्लिकेशन पुराने एक्सटेंशन एपीआई का उपयोग करना जारी रख सकते हैं जिनके विरुद्ध ऐप्स संकलित किए गए थे।

सीटीएस सत्यापन यह सुनिश्चित करता है कि डिवाइस पर एक्सटेंशन एपीआई के किसी भी घोषित संस्करण के लिए, उसके और पिछले संस्करणों के सभी एपीआई मौजूद और कार्यात्मक हैं।

प्रदर्शन

एक्सटेंशन मॉड्यूल को एंड्रॉइड 14 (एपीआई स्तर 34) से शुरू होने वाले डिफ़ॉल्ट रूप से गैर-बूटक्लासपाथ सिस्टम क्लास लोडर में कैश किया जाता है, इसलिए ऐप स्टार्टअप पर मॉड्यूल को मेमोरी में लोड करने के कारण कोई प्रदर्शन प्रभाव नहीं पड़ता है। जब क्लाइंट और सर्वर के बीच अतिरिक्त आईपीसी कॉल की जाती है, तो व्यक्तिगत मॉड्यूल सुविधाओं का उपयोग करने से ऐप्स की प्रदर्शन विशेषताओं पर थोड़ा प्रभाव पड़ सकता है।

मॉड्यूल

गतिविधि एम्बेडिंग

गतिविधि एम्बेडिंग घटक सुविधाओं का एक सेट प्रदान करता है जो एप्लिकेशन को मूल एप्लिकेशन की सीमा के भीतर गतिविधि विंडो प्रस्तुति को व्यवस्थित करने में सक्षम बनाता है। इसमें बहु-फलक लेआउट में एक साथ दो गतिविधियों को दिखाना शामिल है, जिससे पुराने अनुप्रयोगों के लिए बड़े स्क्रीन अनुकूलन की सुविधा मिलती है।

गतिविधि एम्बेडिंग घटक उन सभी उपकरणों पर उपलब्ध होना चाहिए जिनमें sw600 dp के बराबर या उससे बड़े आकार का अंतर्निहित डिस्प्ले हो। बाहरी डिस्प्ले कनेक्शन का समर्थन करने वाले उपकरणों पर गतिविधि एम्बेडिंग भी सक्षम होनी चाहिए, क्योंकि रनटाइम पर बाहरी डिस्प्ले कनेक्ट होने पर एप्लिकेशन को बड़े आकार में दिखाया जा सकता है।

उपकरण का प्रारूप

एक्सटेंशन मॉड्यूल वितरण अनुभाग में वर्णित एक्सटेंशन मॉड्यूल को सक्षम करने के अलावा कोई विशिष्ट डिवाइस कॉन्फ़िगरेशन आवश्यक नहीं है। मल्टी-विंडो मोड का समर्थन करने वाले सभी उपकरणों पर एक्सटेंशन सक्षम करना समझ में आता है। भविष्य के एंड्रॉइड संस्करणों में सामान्य हैंडहेल्ड और बड़े स्क्रीन डिवाइस कॉन्फ़िगरेशन पर आवश्यक एक्सटेंशन बनाने की संभावना है।

विंडो लेआउट की जानकारी

विंडो लेआउट सूचना घटक एक फोल्डेबल डिवाइस पर हिंज की स्थिति और स्थिति की पहचान करता है जब हिंज एक एप्लिकेशन विंडो को पार करता है। विंडो लेआउट जानकारी एप्लिकेशन को फोल्डेबल्स पर टेबलटॉप मोड में अनुकूलित लेआउट का जवाब देने और दिखाने में सक्षम बनाती है। उपयोग विवरण के लिए अपने ऐप फोल्ड को जागरूक बनाएं देखें।

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

एपीआई में पारित Context द्वारा पहचाने गए एप्लिकेशन विंडो के सापेक्ष हिंज स्थिति और सीमा की सूचना दी जानी चाहिए। यदि एप्लिकेशन विंडो सीमाएँ हिंज सीमाओं के साथ प्रतिच्छेद नहीं करती हैं, तो हिंज DisplayFeature रिपोर्ट नहीं की जानी चाहिए। जब डिस्प्ले सुविधाओं की स्थिति विश्वसनीय रूप से रिपोर्ट नहीं की जा सकती है, तो उन्हें रिपोर्ट न करना भी स्वीकार्य है, जैसे कि जब किसी एप्लिकेशन विंडो को उपयोगकर्ता द्वारा मल्टी-विंडो मोड या संगतता लेटरबॉक्सिंग मोड में स्वतंत्र रूप से स्थानांतरित किया जा सकता है।

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

उपकरण का प्रारूप

फोल्डिंग सुविधा कार्यान्वयन का समर्थन करने के लिए, ओईएम को निम्नलिखित कार्य करना होगा:

  • DeviceStateManagerService द्वारा उपयोग किए जाने के लिए डिवाइसस्टेट्स को device_state_configuration.xml में कॉन्फ़िगर करें। संदर्भ के लिए DeviceStateProviderImpl.java देखें।

    यदि DeviceStateProvider या DeviceStatePolicy का डिफ़ॉल्ट कार्यान्वयन डिवाइस के लिए उपयुक्त नहीं है, तो एक कस्टम कार्यान्वयन का उपयोग किया जा सकता है।

  • एक्सटेंशन मॉड्यूल वितरण अनुभाग में वर्णित एक्सटेंशन मॉड्यूल को सक्षम करें।

  • com.android.internal.R.string.config_display_features स्ट्रिंग संसाधन में डिस्प्ले सुविधाओं का स्थान निर्दिष्ट करें (आमतौर पर डिवाइस ओवरले में frameworks/base/core/res/res/values/config.xml में)।

    स्ट्रिंग के लिए अपेक्षित प्रारूप है:

    <type>-[<left>,<top>,<right>,<bottom>]

    type या तो fold या hinge हो सकता है। left , top , right और bottom मान प्राकृतिक डिस्प्ले ओरिएंटेशन में डिस्प्ले समन्वय स्थान में पूर्णांक पिक्सेल निर्देशांक हैं। कॉन्फ़िगरेशन स्ट्रिंग में अर्धविराम द्वारा अलग किए गए कई डिस्प्ले फ़ीचर शामिल हो सकते हैं।

    उदाहरण के लिए:

    <!-- Jetpack WindowManager display features -->
    <string name="config_display_features" translatable="false">fold-[1000,0,1000,2000]</string>
    
  • DeviceStateManager में प्रयुक्त आंतरिक डिवाइस स्थिति पहचानकर्ताओं और com.android.internal.R.array.config_device_state_postures में डेवलपर्स को भेजे गए सार्वजनिक स्थिति स्थिरांक के बीच मैपिंग को परिभाषित करें।

    प्रत्येक प्रविष्टि के लिए अपेक्षित प्रारूप है:

    <device_specific_state_identifier>:<Jetpack WindowManager state identifier>

    समर्थित राज्य पहचानकर्ता हैं:

    • COMMON_STATE_NO_FOLDING_FEATURES = 1 : राज्य में रिपोर्ट करने के लिए कोई फोल्डिंग सुविधाएँ नहीं हैं। उदाहरण के लिए, यह सामान्य इन-फोल्डिंग डिवाइस की बंद स्थिति हो सकती है जिसमें मुख्य स्क्रीन अंदर की तरफ होती है।
    • COMMON_STATE_HALF_OPENED = 2 : फोल्डिंग सुविधा आधी खुली है।
    • COMMON_STATE_FLAT = 3 : फ़ोल्डिंग सुविधा समतल है। उदाहरण के लिए, यह अंदर की तरफ मुख्य स्क्रीन के साथ सामान्य इन-फोल्डिंग डिवाइस की खुली हुई स्थिति हो सकती है।
    • COMMON_STATE_USE_BASE_STATE = 1000 : एंड्रॉइड 14 में, एक मान जिसका उपयोग अनुकरणीय राज्यों के लिए किया जा सकता है जहां आधार राज्य का उपयोग करके हिंज राज्य प्राप्त किया जाता है, जैसा कि CommonFoldingFeature.java में परिभाषित किया गया है

    अधिक जानकारी के लिए DeviceStateManager.DeviceStateCallback#onBaseStateChanged(int) देखें।

    उदाहरण के लिए:

    <!-- Map of System DeviceState supplied by DeviceStateManager to WindowManager posture.-->
    <string-array name="config_device_state_postures" translatable="false">
        <item>0:1</item>    <!-- CLOSED       : COMMON_STATE_NO_FOLDING_FEATURES -->
        <item>1:2</item>    <!-- HALF_OPENED  : COMMON_STATE_HALF_OPENED -->
        <item>2:3</item>    <!-- OPENED       : COMMON_STATE_FLAT -->
        <item>3:1</item>    <!-- REAR_DISPLAY : COMMON_STATE_NO_FOLDING_FEATURES -->
        <item>4:1000</item> <!-- CONCURRENT   : COMMON_STATE_USE_BASE_STATE -->
    </string-array>
    

खिड़की क्षेत्र

विंडो एरिया घटक सुविधाओं का एक सेट प्रदान करता है जो एप्लिकेशन को कुछ फोल्डेबल और मल्टी-डिस्प्ले डिवाइस पर अतिरिक्त डिस्प्ले और डिस्प्ले क्षेत्रों तक पहुंच प्रदान करता है।

रियर डिस्प्ले मोड एक एप्लिकेशन को सेल्फी और वीडियो के लिए मुख्य डिवाइस कैमरे के उपयोग की अनुमति देने के लिए फोल्डेबल डिवाइस के कवर डिस्प्ले पर कैमरा पूर्वावलोकन यूआई दिखाने में सक्षम बनाता है। जिन डिवाइसों में एंड्रॉइड-संगत है (जैसा कि आकार, घनत्व और उपलब्ध नेविगेशन सामर्थ्य जैसी विशेषताओं के संदर्भ में एंड्रॉइड सीडीडी द्वारा परिभाषित किया गया है) कवर डिस्प्ले जो रियर डिवाइस कैमरों के साथ संरेखित होता है, उन्हें रियर डिस्प्ले मोड तक पहुंच प्रदान करनी चाहिए।

एंड्रॉइड 14 पर, डुअल डिस्प्ले मोड उन एप्लिकेशन को सक्षम बनाता है जो फोल्डेबल डिवाइस के आंतरिक डिस्प्ले पर चलते हैं ताकि अन्य उपयोगकर्ताओं के सामने कवर डिस्प्ले पर अतिरिक्त सामग्री दिखा सकें; उदाहरण के लिए, कवर डिस्प्ले उस व्यक्ति को कैमरा पूर्वावलोकन दिखा सकता है जिसकी फोटो खींची जा रही है या रिकॉर्ड की जा रही है।

उपकरण का प्रारूप

फोल्डिंग सुविधा कार्यान्वयन का समर्थन करने के लिए, ओईएम को निम्नलिखित कार्य करना होगा:

  • DeviceStateManagerService द्वारा उपयोग किए जाने के लिए डिवाइसस्टेट्स को device_state_configuration.xml में कॉन्फ़िगर करें। अधिक जानकारी के लिए DeviceStateProviderImpl.java देखें।

    यदि DeviceStateProvider या DeviceStatePolicy का डिफ़ॉल्ट कार्यान्वयन डिवाइस के लिए उपयुक्त नहीं है, तो एक कस्टम कार्यान्वयन का उपयोग किया जा सकता है।

  • ओपन या फ्लैट मोड का समर्थन करने वाले फोल्डेबल डिवाइस के लिए, com.android.internal.R.array.config_openDeviceStates में संबंधित राज्य पहचानकर्ता निर्दिष्ट करें।

  • इन-फोल्डिंग डिवाइसों के लिए जो फोल्डेड स्थिति का समर्थन करते हैं, संबंधित स्थिति पहचानकर्ताओं को com.android.internal.R.array.config_foldedDeviceStates में सूचीबद्ध करें।

  • इन-फोल्डिंग डिवाइसों के लिए जो आधे-मुड़े हुए राज्य का समर्थन करते हैं (लैपटॉप की तरह हिंज आधा खुला होता है), संबंधित राज्यों को com.android.internal.R.array.config_halfFoldedDeviceStates में सूचीबद्ध करें।

  • उन उपकरणों के लिए जो रियर डिस्प्ले मोड का समर्थन करते हैं:

    • DeviceStateManager के लिए com.android.internal.R.array.config_rearDisplayDeviceStates में संबंधित स्थितियों को सूचीबद्ध करें।
    • com.android.internal.R.string.config_rearDisplayPhysicalAddress में रियर डिस्प्ले का भौतिक डिस्प्ले पता निर्दिष्ट करें।
    • एक्सटेंशन द्वारा उपयोग किए जाने वाले com.android.internal.R.integer.config_deviceStateRearDisplay में राज्य पहचानकर्ता निर्दिष्ट करें।
    • इसे अनुप्रयोगों के लिए उपलब्ध कराने के लिए com.android.internal.R.array.config_deviceStatesAvailableForAppRequests में राज्य पहचानकर्ता जोड़ें।
  • एंड्रॉइड 14 पर, उन उपकरणों के लिए जो दोहरे (समवर्ती) डिस्प्ले मोड का समर्थन करते हैं:

    • com.android.internal.R.bool.config_supportsConcurrentInternalDisplays को true पर सेट करें।
    • com.android.internal.R.config_deviceStateConcurrentRearDisplay में रियर डिस्प्ले का भौतिक डिस्प्ले पता निर्दिष्ट करें।
    • यदि पहचानकर्ता को अनुप्रयोगों के लिए उपलब्ध कराया जाना है, तो एक्सटेंशन द्वारा उपयोग किए जाने वाले com.android.internal.R.integer.config_deviceStateConcurrentRearDisplay में राज्य पहचानकर्ता निर्दिष्ट करें।
    • इसे अनुप्रयोगों के लिए उपलब्ध कराने के लिए com.android.internal.R.array.config_deviceStatesAvailableForAppRequests में राज्य पहचानकर्ता जोड़ें।

सत्यापन

सामान्य परिदृश्यों में अपेक्षित व्यवहार सुनिश्चित करने के लिए ओईएम को अपने कार्यान्वयन को सत्यापित करना होगा। जेटपैक विंडोमैनेजर का उपयोग करके सीटीएस परीक्षण और परीक्षण कार्यान्वयन के परीक्षण के लिए ओईएम के लिए उपलब्ध हैं।

सीटीएस परीक्षण

सीटीएस परीक्षण चलाने के लिए, सीटीएस परीक्षण चलाएँ देखें। जेटपैक विंडोमैनेजर से संबंधित सीटीएस परीक्षण cts/tests/framework/base/windowmanager/jetpack/ के अंतर्गत हैं। परीक्षण मॉड्यूल का नाम CtsWindowManagerJetpackTestCases है।

विंडोमैनेजर परीक्षण

जेटपैक विंडोमैनेजर परीक्षण डाउनलोड करने के लिए, एंड्रॉइड जेटपैक निर्देशों का पालन करें। परीक्षण विंडो लाइब्रेरी में window:window मॉड्यूल: window/window/src/androidTest/ स्थित हैं।

कमांड लाइन से window:window मॉड्यूल के लिए डिवाइस परीक्षण चलाने के लिए, निम्न कार्य करें:

  1. ऐसे डिवाइस में प्लग इन करें जिसमें डेवलपर विकल्प और यूएसबी डिबगिंग सक्षम हो।
  2. कंप्यूटर को डिवाइस को डीबग करने की अनुमति दें।
  3. androidx रिपॉजिटरी की रूट डायरेक्टरी में एक शेल खोलें।
  4. डायरेक्टरी को framework/support में बदलें।
  5. निम्न आदेश चलाएँ: ./gradlew window:window:connectedAndroidTest
  6. परिणामों का विश्लेषण करें.

एंड्रॉइड स्टूडियो से परीक्षण चलाने के लिए, निम्नलिखित कार्य करें:

  1. एंड्रॉइड स्टूडियो खोलें।
  2. ऐसे डिवाइस में प्लग इन करें जिसमें डेवलपर विकल्प और यूएसबी डिबगिंग सक्षम हो।
  3. कंप्यूटर को डिवाइस को डीबग करने की अनुमति दें।
  4. विंडो मॉड्यूल की विंडो लाइब्रेरी के भीतर एक परीक्षण पर जाएँ।
  5. एक परीक्षण कक्षा खोलें और संपादक के दाईं ओर हरे तीरों का उपयोग करके चलाएं।

वैकल्पिक रूप से, आप एक परीक्षण विधि, एक परीक्षण वर्ग, या एक मॉड्यूल में सभी परीक्षण चलाने के लिए एंड्रॉइड स्टूडियो में एक कॉन्फ़िगरेशन बना सकते हैं।

शेल के आउटपुट को देखकर परिणामों का मैन्युअल रूप से विश्लेषण किया जा सकता है। यदि डिवाइस कुछ निश्चित मान्यताओं पर खरा नहीं उतरता है तो कुछ परीक्षण छोड़ दिए जाते हैं। परिणाम एक मानक स्थान पर सहेजे जाते हैं, और विश्लेषक परिणामों के विश्लेषण को स्वचालित करने के लिए एक स्क्रिप्ट लिख सकते हैं।