कनेक्टेड डिसप्ले की मदद से, स्टैंडर्ड फ़ोन पर डेस्कटॉप विंडो का अनुभव मिलता है. इससे उपयोगकर्ताओं को अपने मोबाइल डिवाइसों से बड़ी स्क्रीन का ऐक्सेस मिलता है. इस सुविधा की मदद से, ऐप्लिकेशन के साथ इंटरैक्ट करने और उपयोगकर्ता की प्रोडक्टिविटी बढ़ाने के नए तरीके मिलते हैं.
कनेक्ट किए गए डिसप्ले पर, डेस्कटॉप विंडोविंग की सभी खास सुविधाएं लागू होती हैं. फ़ोन को डिसप्ले से कनेक्ट करने पर, फ़ोन की स्थिति में कोई बदलाव नहीं होता. साथ ही, कनेक्ट किए गए डिसप्ले पर एक खाली डेस्कटॉप सेशन शुरू हो जाता है. डिवाइस और डिसप्ले, दो अलग-अलग सिस्टम के तौर पर काम करते हैं. साथ ही, हर डिसप्ले के लिए अलग-अलग ऐप्लिकेशन होते हैं.
अगर किसी टैबलेट जैसे डेस्कटॉप विंडो की सुविधा वाले डिवाइस को किसी बाहरी मॉनिटर से कनेक्ट किया जाता है, तो डेस्कटॉप सेशन दोनों डिसप्ले पर दिखता है. इसके बाद, दोनों डिसप्ले एक ही सिस्टम के तौर पर काम करते हैं. इस सेटअप की मदद से, विंडो, कॉन्टेंट, और कर्सर को दो डिसप्ले के बीच आसानी से मूव किया जा सकता है.
कनेक्ट किए गए डिसप्ले के साथ बेहतर तरीके से काम करने के लिए, आपको अपने ऐप्लिकेशन के डिज़ाइन और उसे लागू करने के कई पहलुओं पर ध्यान देना होगा. यहां दिए गए सबसे सही तरीकों से, उपयोगकर्ता को आसान और बेहतर अनुभव मिलता है.
डाइनैमिक डिसप्ले में होने वाले बदलावों को हैंडल करना
कई ऐप्लिकेशन इस धारणा के साथ बनाए जाते हैं कि ऐप्लिकेशन के लाइफ़साइकल के दौरान, Display
ऑब्जेक्ट और उसकी विशेषताओं में कोई बदलाव नहीं होगा. हालांकि, जब कोई उपयोगकर्ता किसी बाहरी मॉनिटर को कनेक्ट या डिसकनेक्ट करता है या किसी ऐप्लिकेशन विंडो को डिसप्ले के बीच में ले जाता है, तो आपके ऐप्लिकेशन के कॉन्टेक्स्ट या विंडो से जुड़ा अंडरलाइंग Display
ऑब्जेक्ट बदल सकता है. डिसप्ले की प्रॉपर्टी, जैसे कि साइज़, रिज़ॉल्यूशन, रीफ़्रेश रेट, एचडीआर सपोर्ट, और डेंसिटी अलग-अलग हो सकती हैं. उदाहरण के लिए, अगर फ़ोन की स्क्रीन के आधार पर वैल्यू को हार्डकोड किया जाता है, तो हो सकता है कि आपके लेआउट किसी बाहरी डिसप्ले पर काम न करें.
बाहरी डिसप्ले की पिक्सल डेंसिटी भी काफ़ी अलग-अलग हो सकती है. आपको यह पक्का करना होगा कि आपका ऐप्लिकेशन, डेंसिटी में होने वाले बदलावों के हिसाब से सही तरीके से काम करता हो. इसमें लेआउट के लिए डेंसिटी-इंडिपेंडेंट पिक्सल (dp) का इस्तेमाल करना, डेंसिटी के हिसाब से संसाधन उपलब्ध कराना, और यह पक्का करना शामिल है कि आपका यूज़र इंटरफ़ेस (यूआई) सही तरीके से स्केल हो.
सही कॉन्टेक्स्ट का इस्तेमाल करना
एक से ज़्यादा डिसप्ले वाले एनवायरमेंट में, सही संदर्भ का इस्तेमाल करना ज़रूरी है. संसाधनों को ऐक्सेस करते समय, गतिविधि का कॉन्टेक्स्ट (जो दिखता है) और ऐप्लिकेशन का कॉन्टेक्स्ट (जो नहीं दिखता) अलग-अलग होता है.
गतिविधि के कॉन्टेक्स्ट में डिसप्ले के बारे में जानकारी होती है. साथ ही, इसे हमेशा उस डिसप्ले एरिया के हिसाब से अडजस्ट किया जाता है जहां गतिविधि दिखती है. इससे, आपको अपने ऐप्लिकेशन के डिसप्ले डेंसिटी या विंडो मेट्रिक के बारे में सही जानकारी मिलती है. मौजूदा विंडो या डिसप्ले के बारे में जानकारी पाने के लिए, हमेशा गतिविधि कॉन्टेक्स्ट (या यूज़र इंटरफ़ेस (यूआई) पर आधारित किसी अन्य कॉन्टेक्स्ट) का इस्तेमाल करें. इसका असर उन कुछ सिस्टम एपीआई पर भी पड़ता है जो कॉन्टेक्स्ट से मिली जानकारी का इस्तेमाल करते हैं.
डिसप्ले की जाने वाली जानकारी पाना
किसी डिसप्ले के बारे में जानकारी पाने के लिए, Display
क्लास का इस्तेमाल किया जा सकता है. जैसे, उसका साइज़ या फ़्लैग, जो यह बताते हैं कि डिसप्ले सुरक्षित है या नहीं. उपलब्ध डिसप्ले देखने के लिए, DisplayManager
सिस्टम सेवा का इस्तेमाल करें:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()
गतिविधि लॉन्च और कॉन्फ़िगरेशन मैनेज करना
कनेक्ट किए गए डिसप्ले की मदद से, ऐप्लिकेशन यह तय कर सकते हैं कि लॉन्च होने या कोई दूसरी गतिविधि बनाने पर, उन्हें किस डिसप्ले पर चलाया जाना चाहिए. यह तरीका, मेनिफ़ेस्ट फ़ाइल में बताए गए गतिविधि लॉन्च मोड और गतिविधि लॉन्च करने वाली इकाई के सेट किए गए इंटेंट फ़्लैग और विकल्पों पर निर्भर करता है.
जब कोई गतिविधि किसी सेकंडरी डिसप्ले पर चलती है, तो आपके ऐप्लिकेशन में कॉन्टेक्स्ट अपडेट, विंडो का साइज़ बदलना, और कॉन्फ़िगरेशन और संसाधन में बदलाव हो सकते हैं. अगर गतिविधि, कॉन्फ़िगरेशन में हुए बदलाव को मैनेज करती है, तो इसकी सूचना onConfigurationChanged()
में दी जाती है. ऐसा न होने पर, गतिविधि को फिर से लॉन्च किया जाता है.
अगर किसी गतिविधि के लिए चुने गए लॉन्च मोड में एक से ज़्यादा इंस्टेंस इस्तेमाल करने की अनुमति है, तो दूसरी स्क्रीन पर लॉन्च करने से गतिविधि का नया इंस्टेंस बन सकता है. दोनों गतिविधियां एक ही समय पर फिर से शुरू हो जाती हैं. इससे मल्टीटास्किंग के कुछ मामलों में फ़ायदा हो सकता है.
ActivityOptions
का इस्तेमाल करके, किसी डिसप्ले पर गतिविधि शुरू की जा सकती है:
val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())
डिवाइस की अनुमति वाली सूचियों से बचना
ऐप्लिकेशन, कभी-कभी अनुमति वाली सूची या डिवाइस में पहले से मौजूद डिसप्ले साइज़ की जांच करके, चुनिंदा डिवाइसों पर बड़ी स्क्रीन वाले यूज़र इंटरफ़ेस (यूआई) और सुविधाओं पर पाबंदी लगाते हैं. कनेक्ट किए गए डिसप्ले के साथ, यह तरीका अब कारगर नहीं है. ऐसा इसलिए है, क्योंकि किसी भी नए डिवाइस को बड़ी स्क्रीन से कनेक्ट किया जा सकता है. अपने ऐप्लिकेशन को रिस्पॉन्सिव डिज़ाइन करें, ताकि वह अलग-अलग स्क्रीन साइज़ और डेंसिटी के हिसाब से अडजस्ट हो सके.
बाहरी डिवाइसों के साथ काम करना
जब उपयोगकर्ता किसी बाहरी डिसप्ले से कनेक्ट करते हैं, तो वे अक्सर डेस्कटॉप जैसा माहौल बनाते हैं. इसमें अक्सर बाहरी कीबोर्ड, माउस, ट्रैकपैड, वेबकैम, माइक्रोफ़ोन, और स्पीकर का इस्तेमाल किया जाता है. आपको यह पक्का करना होगा कि आपका ऐप्लिकेशन इन पेरिफ़रल डिवाइसों के साथ आसानी से काम करे. इसमें कीबोर्ड शॉर्टकट मैनेज करना, माउस पॉइंटर के इंटरैक्शन मैनेज करना, बाहरी कैमरे या माइक्रोफ़ोन के साथ सही तरीके से काम करना, और ऑडियो आउटपुट को रूट करना शामिल है. ज़्यादा जानकारी के लिए, बड़ी स्क्रीन पर इनपुट की सुविधा के साथ काम करने वाले डिवाइस देखें.
उपयोगकर्ता की प्रोडक्टिविटी बढ़ाना
कनेक्ट किए गए डिसप्ले, उपयोगकर्ता की प्रोडक्टिविटी को बेहतर बनाने का एक अहम मौका देते हैं. अब आपके पास ऐसे मोबाइल ऐप्लिकेशन बनाने के टूल हैं जो डेस्कटॉप ऐप्लिकेशन जैसा अनुभव दे सकते हैं. उपयोगकर्ता की प्रोडक्टिविटी बढ़ाने के लिए, इन सुविधाओं को लागू करें:
- उपयोगकर्ताओं को एक ही ऐप्लिकेशन के कई इंस्टेंस खोलने की अनुमति दें. यह दस्तावेज़ों की तुलना करने, अलग-अलग बातचीत मैनेज करने या एक साथ कई फ़ाइलें देखने जैसे कामों के लिए बहुत ज़रूरी है.
- उपयोगकर्ताओं को खींचें और छोड़ें सुविधा की मदद से, आपके ऐप्लिकेशन में और उससे बाहर रिच डेटा शेयर करने की सुविधा दें.
- स्टेटस मैनेजमेंट सिस्टम लागू करके, उपयोगकर्ताओं को कॉन्फ़िगरेशन में होने वाले बदलावों के बावजूद, अपना वर्कफ़्लो बनाए रखने में मदद करें.
इन दिशा-निर्देशों का पालन करके और दिए गए कोड के उदाहरणों का इस्तेमाल करके, ऐसे ऐप्लिकेशन बनाए जा सकते हैं जो कनेक्ट किए गए डिसप्ले के साथ आसानी से काम करते हैं. इससे, उपयोगकर्ताओं को बेहतर और ज़्यादा काम का अनुभव मिलता है.