मल्टी-विंडो मोड की सुविधा

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

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

मल्टी-विंडो मोड के लिए डिवाइस से जुड़ी ज़रूरी शर्तें

Android 7.0 और इसके बाद के वर्शन में, मल्टी-विंडो की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसे बंद करने के लिए, अपने डिवाइस की config.xml फ़ाइल में config_supportsMultiWindow फ़्लैग को false पर सेट करें.

कम रैम वाले सभी डिवाइसों पर, मल्टी-विंडो की सुविधा डिफ़ॉल्ट रूप से बंद होती है. कम रैम वाले डिवाइसों के लिए, ActivityManager.isLowRam फ़्लैग का इस्तेमाल किया जाता है. कम रैम वाले डिवाइस, ActivityManager.isLowRam फ़्लैग की वैल्यू को अनदेखा करते हैं.config_supportsMultiWindow

Freeform

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

  • config_supportsMultiWindow फ़्लैग चालू करें.
  • इनमें से किसी एक तरीके से, फ़्रीफ़ॉर्म विंडो मोड चालू करें:
    • config.xml में config_freeformWindowManagement फ़्लैग चालू करें:
      <feature name="android.software.freeform_window_management" />
    • डिवाइस की मेकफ़ाइल में यह जानकारी शामिल करें:
      PRODUCT_COPY_FILES += \
      frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml

Android 16 में, OEM अपने डिवाइस पर डेस्कटॉप विंडो की सुविधा चालू कर सकते हैं. इसके लिए, उन्हें डेस्कटॉप विंडो की सुविधा चालू करें का इस्तेमाल करके, फ़्रीफ़ॉर्म मल्टी-विंडो कॉन्फ़िगरेशन सेट करना होगा.

डेस्कटॉप विंडोविंग

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

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

डेस्कटॉप पर विंडो की सुविधा के लिए किसी डिवाइस को कॉन्फ़िगर करने के लिए, ये ज़रूरी शर्तें पूरी करें:

  • इन फ़्लैग को चालू करें:
    • Freeform विंडोइंग के लिए सभी ज़रूरी शर्तें
    • ग्लोबल डेस्कटॉप विंडोविंग फ़्लैग config_isDesktopModeSupported
  • सिस्टम यूआई के लिए, कम से कम 600 डीपी चौड़ाई वाला डिसप्ले ज़रूरी है. ऐसा हो सकता है कि छोटी स्क्रीन पर, डेस्कटॉप विंडो की सुविधा ठीक से काम न करे.
  • डिवाइस में कम रैम नहीं होनी चाहिए. ActivityManager.isLowRam को false वैल्यू दिखानी चाहिए, क्योंकि कम रैम वाले डिवाइसों पर मल्टी-विंडो की कोई भी सुविधा काम नहीं करती.

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

मोड सिर्फ़ फ़ुलस्क्रीन वाले हैंडहेल्ड डिवाइस कनेक्ट किए गए डिसप्ले पर, फ़ुलस्क्रीन-फ़र्स्ट हैंडहेल्ड प्रोजेक्टर की सुविधा कनेक्ट किए गए डिसप्ले पर फ़ुलस्क्रीन मोड में वीडियो देखना डेस्कटॉप विंडोविंग-पहली बड़ी स्क्रीन
डिवाइस के नाप या आकार का उदाहरण हाथ में पकड़कर इस्तेमाल किया जाने वाला फ़ोन ऐसा फ़ोन जिसे हाथ में रखकर इस्तेमाल किया जा सकता हो और जिसमें एचडीएमआई के ज़रिए बाहरी डिसप्ले से कनेक्ट करने की सुविधा हो ऐसा टैबलेट जिसमें एचडीएमआई के ज़रिए बाहरी डिसप्ले कनेक्ट करने की सुविधा हो कीबोर्ड वाला ऐसा टैबलेट जिसमें बाहरी डिसप्ले के लिए एचडीएमआई की सुविधा हो
इंटरनल डिसप्ले का अनुभव फ़ुलस्क्रीन, स्प्लिट स्क्रीन, पीआईपी, और नॉन-डेस्कटॉप फ़्रीफ़ॉर्म की सुविधा काम करती है फ़ुलस्क्रीन, स्प्लिट स्क्रीन, और PiP मोड में काम करता है अलग-अलग डेस्क के ज़रिए, डेस्कटॉप विंडोविंग की सुविधा का इस्तेमाल करके फ़ुलस्क्रीन, स्प्लिट स्क्रीन, और पीआईपी मोड में काम किया जा सकता है डेस्कटॉप विंडोविंग, विंडोविंग का डिफ़ॉल्ट मोड है. इसमें अलग-अलग डेस्कटॉप इस्तेमाल किए जा सकते हैं. उपयोगकर्ता, अलग-अलग डेस्कटॉप के ज़रिए फ़ुलस्क्रीन या टच मोड डेस्कटॉप विंडोविंग में जा सकते हैं
कनेक्ट किए गए डिसप्ले पर वीडियो देखने का अनुभव सिर्फ़ इंटरनल डिसप्ले को मिरर करना कनेक्ट किए गए डिसप्ले पर ही डेस्कटॉप विंडोइंग की सुविधा मिलती है डेस्कटॉप विंडोविंग की सुविधा से डेस्क को बड़ा किया जा सकता है. यह सुविधा इंटरनल डिसप्ले पर उपलब्ध है डेस्कटॉप विंडोविंग की सुविधा से डेस्क को बड़ा किया जा सकता है. यह सुविधा इंटरनल डिसप्ले पर उपलब्ध है
कॉन्फ़िगरेशन सेटिंग
config_supportsMultiWindow true true true true
config_freeformWindowManagement true true true true
config_isDesktopModeSupported false true true true
config_canInternalDisplayHostDesktops अनदेखा किया गया false true true
config_enterDesktopByDefaultOnFreeformDisplay अनदेखा किया गया false false true

config_isDesktopModeSupported

कॉन्फ़िगरेशन ओवरले फ़्लैग config_isDesktopModeSupported, डेस्कटॉप विंडोविंग की सुविधा चालू करने के लिए टॉप-लेवल का फ़्लैग है. अगर यह सेटिंग चालू नहीं है, तो कॉन्फ़िगरेशन की अन्य सभी सेटिंग को अनदेखा कर दिया जाता है. इसे config.xml में true पर सेट करें:

<!-- Globally enable Desktop windowing logic -->
    <bool name="config_isDesktopModeSupported">true</bool>

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

config_canInternalDisplayHostDesktops

कॉन्फ़िगरेशन ओवरले फ़्लैग config_canInternalDisplayHostDesktops, डिवाइस के इंटरनल डिसप्ले पर डेस्कटॉप विंडोविंग की सुविधा चालू करता है. इसे config.xml में true पर सेट करें:

<!-- Allow the primary internal display to host desktop sessions -->
    <bool name="config_canInternalDisplayHostDesktops">true</bool>

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

config_enterDesktopByDefaultOnFreeformDisplay

कॉन्फ़िगरेशन ओवरले फ़्लैग config_enterDesktopByDefaultOnFreeformDisplay, डिवाइस के इंटरनल डिसप्ले पर डेस्कटॉप विंडो को डिफ़ॉल्ट विंडो मोड के तौर पर सेट करता है. अगर यह सुविधा चालू नहीं है, तो फ़ुलस्क्रीन, विंडोइंग का डिफ़ॉल्ट मोड होता है. इसमें डेस्क एक साथ मौजूद होते हैं. इसे config.xml में true पर सेट करें:

<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
    <bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>

टास्क की सीमाएं तय करने की सुविधा चालू करना

डेस्कटॉप विंडो में ज़्यादा से ज़्यादा टास्क इस्तेमाल करने की सुविधा को कॉन्फ़िगर करने के लिए, config.xml में config_maxDesktopWindowingActiveTasks कॉन्फ़िगरेशन ओवरले फ़्लैग को, इस्तेमाल किए जा सकने वाले टास्क की ज़्यादा से ज़्यादा संख्या पर सेट करें. टास्क की संख्या को असीमित करने के लिए, फ़्लैग की वैल्यू को 0 पर सेट करें:

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

डेस्क लिमिट की सुविधा चालू करना

डेस्कटॉप विंडो में इस्तेमाल किए जा सकने वाले वर्चुअल डेस्क की ज़्यादा से ज़्यादा संख्या को कॉन्फ़िगर करने के लिए, config_maxDesktopWindowingDesks में config.xml कॉन्फ़िग ओवरले फ़्लैग को, इस्तेमाल किए जा सकने वाले डेस्क की ज़्यादा से ज़्यादा संख्या पर सेट करें. जितनी चाहें उतनी डेस्क के लिए, फ़्लैग की वैल्यू को 0 पर सेट करें:

<!-- Maximum number of virtual desks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingDesks">4</integer>

स्प्लिट स्क्रीन

मल्टी-विंडो की डिफ़ॉल्ट सेटिंग में स्प्लिट-स्क्रीन मोड होता है. इसमें सिस्टम यूज़र इंटरफ़ेस (यूआई) को पोर्ट्रेट या लैंडस्केप मोड में डिवाइस के बीच में बांटा जाता है. उपयोगकर्ता, विंडो का साइज़ बदलने के लिए, डिवाइस के स्क्रीन की दिशा के हिसाब से, डिवाइड करने वाली लाइन को एक तरफ़ से दूसरी तरफ़ या ऊपर से नीचे की ओर खींचें और छोड़ें.

स्प्लिट स्क्रीन की सुविधा चालू करने के बाद, डिवाइस बनाने वाली कंपनियां फ़्रीफ़ॉर्म या पीआईपी मोड चालू कर सकती हैं.

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

पिक्चर में पिक्चर

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

पीआईपी की सुविधा के लिए, PackageManager#FEATURE_PICTURE_IN_PICTURE में /android/frameworks/base/core/java/android/content/pm/PackageManager.java सिस्टम सुविधा चालू करें.

Android 8.0 और इसके बाद के वर्शन वाले डिवाइसों पर पीआईपी की सुविधा लागू करने के बारे में ज़्यादा जानने के लिए, पिक्चर में पिक्चर लेख पढ़ें.

सिस्टम यूज़र इंटरफ़ेस (यूआई)

मल्टी-विंडो मोड की पुष्टि करना के मुताबिक, सभी स्टैंडर्ड सिस्टम यूज़र इंटरफ़ेस (यूआई) के साथ काम करता हो.

ऐप्लिकेशन

प्रीलोड किए गए ऐप्लिकेशन के लिए मल्टी-विंडो मोड की सुविधा चालू करने के लिए, मल्टी-विंडो मोड की सुविधा चालू करना लेख पढ़ें.

सत्यापन

मल्टी-विंडो मोड को लागू करने की पुष्टि करने के लिए, इससे जुड़े सीटीएस टेस्ट चलाएं. साथ ही, मल्टी-विंडो मोड की पुष्टि में दिए गए निर्देशों का पालन करें.

Android वर्शन सीटीएस टेस्ट
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
Android 10 और उसके बाद के वर्शन /platform/cts/tests/framework/base/windowmanager/src/android/server/wm