WindowManager एक्सटेंशन

Jetpack WindowManager लाइब्रेरी से ऐप्लिकेशन डेवलपर नए डिवाइस के नाप या आकार में सहायता कर सकते हैं और मल्टी-विंडो एनवायरमेंट.

WindowManager एक्सटेंशन (एक्सटेंशन), एक ऑप्ट-इन Android प्लैटफ़ॉर्म मॉड्यूल है. यह यह सुविधा, Jetpack WindowManager की कई तरह की सुविधाओं को चालू करती है. मॉड्यूल लागू किया गया frameworks/base/libs/WindowManager/Jetpack के लिए एओएसपी में और शिप किए जाने वाले ऐसे डिवाइसेस जो WindowManager सुविधाओं का समर्थन करते हैं.

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

एक्सटेंशन को .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/, जिससे वे आवेदन की प्रक्रियाओं में उपलब्ध हो जाते हैं. आम तौर पर मॉड्यूल में लोड किए जाते हैं और रनटाइम को Jetpack WindowManager लाइब्रेरी में इस्तेमाल किया जाता है. इस वजह से, जैसा कि क्लाइंट-साइड फ़्रेमवर्क कोड से मिलता-जुलता है, जैसा कि नीचे दिखाया गया है इमेज:

पहली इमेज. ऐप्लिकेशन में लोड किए गए WindowManager एक्सटेंशन प्लैटफ़ॉर्म कोड की तरह प्रोसेस करता है.

androidx.window.extensions मॉड्यूल, मौजूदा एक्सटेंशन मॉड्यूल है ऐक्टिव डेवलपमेंट. androidx.window.sidecar मॉड्यूल एक लेगसी मॉड्यूल है इसे Jetpack WindowManager के सबसे पुराने वर्शन के साथ काम करने के लिए शामिल किया गया है. लेकिन साइडकार का अब सक्रिय रूप से रखरखाव नहीं किया जा रहा है.

नीचे दिए गए डायग्राम में, यह तय करने का तरीका बताया गया है कि किस लॉजिक को androidx.window.extensions या androidx.window.sidecar.

दूसरी इमेज. ऐक्सेस करने के लिए डिसिज़न ट्री androidx.window.extensions या androidx.window.sidecar.

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

बड़ी स्क्रीन को फ़ोल्ड किए जा सकने वाले डिवाइसों के लिए, एक्सटेंशन में विंडो खोलने की सुविधाएं मिलती हैं. ऐसे डिवाइस जो बाहरी डिसप्ले पर विंडो खोलने की सुविधा देते हैं. इन फ़ीचर में ये शामिल हैं:

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

एक्सटेंशन और Jetpack API

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

एक्सटेंशन से मिले एपीआई का इस्तेमाल Jetpack करता है सिर्फ़ WindowManager लाइब्रेरी. एक्सटेंशन एपीआई को कॉल करने की ज़रूरत नहीं है ऐप्लिकेशन डेवलपर सीधे. एक्सटेंशन लाइब्रेरी को यह पक्का करने के लिए कि सही है, Gradle बिल्ड फ़ाइल में किसी ऐप्लिकेशन पर निर्भरता सुविधा पर काम करता है. एक्सटेंशन लाइब्रेरी को किसी ऐप्लिकेशन में पहले से कंपाइल करने से बचें directly; इसके बजाय, मिक्स लोड करने के मामले को रोकने के लिए रनटाइम लोडिंग पर भरोसा करें पहले से कंपाइल किए गए और रनटाइम से उपलब्ध कराए गए एक्सटेंशन क्लास की सूची में शामिल हैं.

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

एक्सटेंशन के वर्शन और अपडेट

एक्सटेंशन मॉड्यूल को Android प्लैटफ़ॉर्म के साथ हर साल अपडेट किया जा सकता है या हर तीन महीने में एक बार अपडेट किया जाता है. हर तीन महीने में होने वाले अपडेट से, एक्सटेंशन एपीआई लेवल चालू हो जाएगा: यह Android प्लैटफ़ॉर्म के एपीआई के अपडेट के बीच में बढ़ोतरी होती है. इससे, यह तेज़ी से काम करता है और यह OEM को नई सुविधाओं में आधिकारिक एपीआई ऐक्सेस जोड़ने का मौका देता है हार्डवेयर लॉन्च के करीब है.

निम्न तालिका में androidx.window.extensions के लिए API वर्शन सूचीबद्ध किए गए हैं Android के अलग-अलग रिलीज़़ हो सकते हैं.

Android प्लैटफ़ॉर्म वर्शन WindowManager एक्सटेंशन एपीआई लेवल androidx.window.extensions एपीआई वर्शन
Android 15 6 1.5.0 (जल्द आ रहा है)
Android 14 क्यूपीआर3 5 1.4.0 (जल्द ही उपलब्ध होगी)
Android 14 क्यूपीआर1 4 1.3.0
Android 14 3 1.2.0
Android 13 क्यूपीआर3 2 1.1.0
Android 13 1 1.0.0
Android 12एल 1 1.0.0

हर बार एक्सटेंशन एपीआई लेवल (बीच में मौजूद कॉलम) बढ़ जाता है मौजूदा स्टेबल एपीआई सरफ़ेस (दायां कॉलम) को जोड़ना होगा.

पीछे और आगे साथ काम करने की सुविधा

Jetpack WindowManager, बार-बार इस्तेमाल किए जाने वाले एपीआई लेवल से जुड़ी समस्याओं को हल करता है अपडेट, तेज़ एपीआई डेवलपमेंट, और पुराने सिस्टम के साथ काम करने की सुविधा. जब लाइब्रेरी कोड को ऐप्लिकेशन प्रोसेस में चलाया जाता है और लाइब्रेरी, एक्सटेंशन एपीआई लेवल और बताए गए एलान के मुताबिक, सुविधाओं का ऐक्सेस देता है स्तर.

रनटाइम के दौरान ऐप्लिकेशन को क्रैश होने से बचाने के लिए, WindowManager यह काम भी करता है रनटाइम Java के लिए उपलब्ध एक्सटेंशन एपीआई की जांच एक्सटेंशन एपीआई लेवल का एलान किया गया था. अगर मैच नहीं होता है, तो WindowManager ये काम कर सकता है एक्सटेंशन का इस्तेमाल बंद कर सकते हैं (आंशिक या पूरी तरह से) और सुविधाएं जो ऐप्लिकेशन के लिए उपलब्ध नहीं हैं.

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

हो सकता है कि एक्सटेंशन के रिलीज़ से पहले वाले वर्शन के साथ काम नहीं किया जाए Android प्लैटफ़ॉर्म की तिमाही या सालाना रिलीज़ से पहले, किन वर्शन को अंतिम रूप दिया जा चुका है. एक्सटेंशन एपीआई का पूरा इतिहास यह हो सकता है: रिलीज़ ब्रांच में मिली window:extensions:extensions एपीआई की टेक्स्ट फ़ाइलें.

एक्सटेंशन के नए वर्शन को WindowManager को ऐप्लिकेशन के तौर पर कंपाइल किया गया, ताकि आगे भी उनके साथ काम किया जा सके. यहां की यात्रा पर हूं पक्का करें कि एक्सटेंशन एपीआई के किसी भी नए वर्शन में सिर्फ़ नए एपीआई जोड़े जाते हैं और पुरानी फ़ाइलें नहीं हटाती हैं. इस वजह से, पुराने WindowManager का इस्तेमाल करने वाले ऐप्लिकेशन वर्शन उन पुराने एक्सटेंशन API का उपयोग करके जारी रख सकते हैं जिन्हें ऐप्लिकेशन कंपाइल किया गया था टीम में हुए हैं.

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

परफ़ॉर्मेंस

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

मॉड्यूल

गतिविधि एम्बेड करना

गतिविधि एम्बेड करना कॉम्पोनेंट, सुविधाओं का ऐसा सेट देता है जो ऐप्लिकेशन को व्यवस्थित करने में मदद करता है ऐक्टिविटी विंडो प्रज़ेंटेशन, पैरंट ऐप्लिकेशन की सीमाओं के अंदर. यह इसमें एक साथ दो गतिविधियां अगल-बगल में दिखाना शामिल है मल्टी-पैनल लेआउट की मदद से, लेगसी वर्शन के लिए बड़ी स्क्रीन को ऑप्टिमाइज़ करना का इस्तेमाल करें.

गतिविधि एम्बेड करने वाला कॉम्पोनेंट उन सभी डिवाइसों पर उपलब्ध होना चाहिए जिनमें पहले से मौजूद डिसप्ले, जिसका साइज़ sw600 dp या इससे ज़्यादा हो. बाहरी डिसप्ले की सुविधा वाले डिवाइसों पर भी गतिविधि एम्बेड करने की सुविधा चालू होनी चाहिए क्योंकि बाहरी कनेक्शन होने पर ऐप्लिकेशन बड़े आकार में दिखाया जा सकता है. डिसप्ले, रनटाइम के दौरान कनेक्ट रहते हैं.

डिवाइस कॉन्फ़िगरेशन

एक्सटेंशन चालू करने के अलावा, किसी खास डिवाइस कॉन्फ़िगरेशन की ज़रूरत नहीं होती है एक्सटेंशन मॉड्यूल डिस्ट्रिब्यूशन में बताए गए मॉड्यूल का इस्तेमाल करें सेक्शन में जाएं. उन सभी डिवाइसों पर एक्सटेंशन चालू करना सही है जो मल्टी-विंडो मोड. आने वाले समय में Android के आने वाले वर्शन में एक्सटेंशन इस्तेमाल हो सकते हैं हैंडहेल्ड और बड़ी स्क्रीन वाले डिवाइस कॉन्फ़िगरेशन के लिए ज़रूरी है.

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

विंडो लेआउट की जानकारी देने वाला कॉम्पोनेंट, जब हिंज किसी ऐप्लिकेशन विंडो को पार कर जाता है, तो फ़ोल्ड किए जा सकने वाले डिवाइस पर हिंज. विंडो लेआउट की जानकारी की मदद से, ऐप्लिकेशन आपके मैसेज का जवाब दे सकते हैं और ऑप्टिमाइज़ की गई जानकारी दिखा सकते हैं फ़ोल्ड किए जा सकने वाले डिवाइसों पर, टेबलटॉप मोड के लेआउट. यहां जाएं: अपने ऐप्लिकेशन को फ़ोल्ड के हिसाब से बनाना देखें.

फ़ोल्ड किए जा सकने वाले ऐसे Android डिवाइस जिनमें एक-दूसरे से कनेक्ट होने वाला हिंज होता है या डिसप्ले पैनल वाले लगातार दिखने वाले हिस्सों में हिंज के बारे में जानकारी होनी चाहिए WindowLayoutComponent तक ऐप्लिकेशन के लिए उपलब्ध है.

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

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

डिवाइस कॉन्फ़िगरेशन

फ़ोल्डिंग सुविधा को लागू करने के लिए, OEM को ये काम करने होंगे:

  • device_state_configuration.xml में डिवाइस की स्थितियों को कॉन्फ़िगर करें, ताकि इनका इस्तेमाल किया जा सके DeviceStateManagerService. यहां जाएं: रेफ़रंस के लिए, 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: चालू Android 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>
    

विंडो एरिया

विंडो एरिया कॉम्पोनेंट, ऐसी सुविधाओं का एक सेट देता है जो ऐप्लिकेशन फ़ोल्ड किए जा सकने वाले कुछ डिवाइस पर, अतिरिक्त डिसप्ले और डिसप्ले एरिया का ऐक्सेस मिलता है मल्टी-डिसप्ले डिवाइस.

रीयर डिसप्ले मोड, किसी ऐप्लिकेशन को कैमरे की झलक दिखाने वाला यूज़र इंटरफ़ेस (यूआई) दिखाता है. फ़ोल्ड किए जा सकने वाले डिवाइस का कवर डिसप्ले, ताकि डिवाइस के मुख्य कैमरे का इस्तेमाल सेल्फ़ी और वीडियो. Android‐के साथ काम करने वाले डिवाइस (जैसा कि Android CDD ने साइज़, सघनता, और फ़ोन पर नेविगेट करने की सुविधाएं उपलब्ध हैं) कवर डिसप्ले, जो पीछे वाले डिवाइस के हिसाब से होता है कैमरे में, रीयर डिसप्ले मोड को ऐक्सेस करने की अनुमति होनी चाहिए.

Android 14 में ड्यूअल डिसप्ले मोड की मदद से, फ़ोल्ड किए जा सकने वाले डिवाइस के इनर डिसप्ले पर चलने वाले ऐप्लिकेशन चालू होते हैं. इससे कवर डिसप्ले पर अन्य कॉन्टेंट दूसरे लोगों को दिखता है; उदाहरण के लिए, कवर डिसप्ले की मदद से किसी व्यक्ति को कैमरे की झलक दिखाई जा सकती है, जिसकी फ़ोटो खींची जा रही है या रिकॉर्ड किया जा रहा है.

डिवाइस कॉन्फ़िगरेशन

फ़ोल्डिंग सुविधा को लागू करने के लिए, OEM को ये काम करने होंगे:

  • device_state_configuration.xml में डिवाइस की स्थितियों को कॉन्फ़िगर करें, ताकि इनका इस्तेमाल किया जा सके DeviceStateManagerService. यहां जाएं: 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 में राज्य का आइडेंटिफ़ायर जोड़ें.
  • Android 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 में राज्य का आइडेंटिफ़ायर जोड़ें.

पुष्टि करना

OEM को अपने तरीकों की पुष्टि करनी होगी, ताकि यह पक्का किया जा सके कि उनके व्यवहार में कोई रुकावट न आए . Jetpack WindowManager का इस्तेमाल करने वाले सीटीएस टेस्ट और टेस्ट, OEM के लिए उपलब्ध हैं इस्तेमाल किया जा सकता है.

सीटीएस टेस्ट

सीटीएस टेस्ट चलाने के लिए, सीटीएस टेस्ट चलाना लेख देखें. सीटीएस Jetpack WindowManager से जुड़े टेस्ट cts/tests/framework/base/windowmanager/jetpack/ से कम हैं. टेस्ट मॉड्यूल का नाम CtsWindowManagerJetpackTestCases है.

WindowManager जांच

Jetpack WindowManager के टेस्ट डाउनलोड करने के लिए, Android Jetpack के लिए निर्देश. जांच, विंडो लाइब्रेरी में window:window मॉड्यूल: window/window/src/androidTest/ में मौजूद होती हैं.

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

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

Android Studio से टेस्ट चलाने के लिए, यह तरीका अपनाएं:

  1. Android Studio खोलें.
  2. उस डिवाइस को प्लग इन करें जिसमें डेवलपर के लिए सेटिंग और यूएसबी डीबग करने की सुविधा चालू हो.
  3. कंप्यूटर को डिवाइस डीबग करने की अनुमति दें.
  4. विंडो मॉड्यूल की विंडो लाइब्रेरी में किसी जांच पर जाएं.
  5. कोई टेस्ट क्लास खोलें और दौड़ने के लिए, Editor.

इसके अलावा, आपके पास टेस्ट चलाने के लिए, Android Studio में कॉन्फ़िगरेशन बनाने का विकल्प भी है किसी मॉड्यूल में सभी जांच शामिल होती हैं.

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