Android 13 में, ऐप्लिकेशन स्ट्रीमिंग की सुविधा की मदद से, फ़ोन पर मौजूद ऐप्लिकेशन को कनेक्ट किए गए डिवाइसों पर स्ट्रीम किया जा सकता है. साथ ही, उन डिवाइसों से ऐप्लिकेशन को इस्तेमाल भी किया जा सकता है. COMPANION_DEVICE_APP_STREAMING
की नई भूमिका से, ऐप्लिकेशन को कनेक्ट किए गए रिमोट डिवाइसों के लिए प्रोक्सी बनाने और मैनेज करने की अनुमति मिलती है. इससे, ऐप्लिकेशन को लोकल डिवाइस से रिमोट डिवाइस पर स्ट्रीम किया जा सकता है. COMPANION_DEVICE_APP_STREAMING
भूमिका वाला ऐप्लिकेशन, वर्चुअल डिसप्ले बनाने, उस पर ऐप्लिकेशन लॉन्च करने, और फिर लॉन्च किए गए ऐप्लिकेशन का वीडियो किसी दूसरे डिवाइस पर स्ट्रीम करने की अनुमतियां पा सकता है. भूमिका रखने वाला ऐप्लिकेशन, रिमोट डिवाइस से मिले इनपुट और माइक्रोफ़ोन इवेंट को स्थानीय डिवाइस में भी इंजेक्ट कर सकता है. ऐसा तब होता है, जब वह डिवाइस किसी पेरिफ़रल के तौर पर कनेक्ट हो.
भवन निर्माण
Android 13 में, वर्चुअल डिवाइस मैनेजर और कंपैनियन डिवाइस मैनेजर (सीडीएम), ऐप्लिकेशन स्ट्रीमिंग और कनेक्ट किए गए डिवाइसों के साथ इंटरैक्ट करने की सुविधा देने के लिए, मुख्य बिल्डिंग ब्लॉक के तौर पर काम करेंगे.
वर्चुअल डिवाइस मैनेजर
ऐप्लिकेशन स्ट्रीमिंग की सुविधा, वर्चुअल डिसप्ले का फ़ायदा उठाकर काम करती है. वर्चुअल डिवाइस मैनेजर, एक वर्चुअल डिसप्ले बनाता है, जो दिखने वाले मुख्य डिसप्ले से अलग होता है. जब उपयोगकर्ता किसी ऐप्लिकेशन को स्ट्रीम करने की सहमति देता है, तो ऐप्लिकेशन को वर्चुअल डिसप्ले पर लॉन्च किया जाता है या उस पर ट्रांसफ़र किया जाता है. वर्चुअल डिसप्ले के कॉन्टेंट को वीडियो स्ट्रीम के ज़रिए, कनेक्ट किए गए डिवाइस पर भेजा जाता है, ताकि उन्हें दिखाया जा सके.
वर्चुअल डिवाइस मैनेजर में ऐसे एपीआई शामिल होते हैं जिनकी मदद से, VirtualDevice
इंस्टेंस बनाए जा सकते हैं, उन्हें रजिस्टर किया जा सकता है, और मैनेज किया जा सकता है.
VirtualDevice
इंस्टेंस, कनेक्ट किए गए डिवाइस और उसकी सुविधाओं के लिए एक प्रॉक्सी है. VirtualDevice
इंस्टेंस, कनेक्ट किए गए डिवाइस को इनकमिंग ऐप्लिकेशन स्ट्रीम को पाने, दिखाने, और उससे इंटरैक्ट करने की सुविधा देता है. इसके लिए, यह ये काम करता है:
- कनेक्ट किए गए डिवाइस के डिसप्ले पर दिखाने के लिए,
VirtualDisplay
का उदाहरण बनाना. - कनेक्ट किए गए डिवाइस के माइक्रोफ़ोन से रिमोट ऑडियो स्ट्रीम को, स्थानीय डिवाइस में चलाने के लिए इंजेक्ट करना.
- कनेक्ट किए गए डिवाइस के कीबोर्ड जैसे रिमोट इनपुट इवेंट को, वीडियो चलाने के लिए लोकल डिवाइस में इंजेक्ट करना.
कंपैनियन डिवाइस मैनेजर
सीडीएम, कनेक्टिविटी की स्थिति को मैनेज करता है. साथ ही, ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए, भूमिका से जुड़ी ज़रूरी शर्तों को लागू करता है.
इस इमेज में, ऐप्लिकेशन स्ट्रीमिंग के दौरान लोकल और रिमोट डिवाइस के बीच इंटरैक्शन को दिखाया गया है:
पहली इमेज. ऐप्लिकेशन स्ट्रीमिंग के दौरान, लोकल और रिमोट डिवाइसों के बीच इंटरैक्शन
साथी ऐप्लिकेशन की स्ट्रीमिंग की भूमिका लागू करना
OEM, COMPANION_DEVICE_APP_STREAMING
भूमिका वाले ऐप्लिकेशन को लागू कर सकते हैं, ताकि उनके डिवाइसों पर अलग-अलग डिवाइसों पर बेहतर और सुरक्षित अनुभव मिल सके.
ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए वर्चुअल डिवाइस बनाने के लिए, यह ज़रूरी है कि ऐप्लिकेशन के पास COMPANION_DEVICE_APP_STREAMING
भूमिका हो. भूमिका मिलने पर, ऐप्लिकेशन को CREATE_VIRTUAL_DEVICE
अनुमति मिलती है. इसकी मदद से, ऐप्लिकेशन वर्चुअल डिवाइस बना सकता है. भूमिका रखने वाले लोगों को, कनेक्ट किए गए डिवाइस के लिए प्रॉक्सी के तौर पर काम करने वाला VirtualDevice
इंस्टेंस बनाकर, ऐप्लिकेशन स्ट्रीमिंग की सुविधा लागू करनी होगी. VirtualDevice
क्लास, वर्चुअल डिसप्ले के कंपोज़िट किए गए हिस्से को निकालने के तरीके उपलब्ध कराती है. यह हिस्सा, किसी दूसरे डिवाइस पर स्ट्रीम करने के लिए सही होता है. VirtualDevice
क्लास, रिमोट डिवाइस पर होने वाले इनपुट इवेंट को लोकल डिवाइस में इंजेक्ट करने के लिए एपीआई भी उपलब्ध कराती है. इससे, लोकल डिवाइस पर चल रहे ऐप्लिकेशन को ऐसा दिखता है जैसे वह रिमोट डिवाइस पर नेटिव तौर पर चल रहा हो.
साथी ऐप्लिकेशन की स्ट्रीमिंग भूमिका लागू करने के लिए, यह तरीका अपनाएं:
ऐसा ऐप्लिकेशन बनाएं जो मेनिफ़ेस्ट में
REQUEST_COMPANION_PROFILE_APP_STREAMING
अनुमति का अनुरोध करता हो.उपयोगकर्ता से ऐप्लिकेशन स्ट्रीमिंग की अनुमति देने के लिए कहें.
COMPANION_DEVICE_APP_STREAMING
भूमिका का अनुरोध करने के लिए, CDMAssociationRequest
इंस्टेंस बनाएं. भूमिका मिलने पर, ऐप्लिकेशन कोCREATE_VIRTUAL_DEVICE
अनुमति मिलती है.VirtualDevice
इंस्टेंस बनाने के लिए, कॉल करेंVirtualDeviceManager#create()
पर क्लिक करें.VirtualDevice
इंस्टेंस की मदद से, ऐप्लिकेशन वर्चुअल डिसप्ले और वर्चुअल इनपुट बना सकता है और उन्हें मैनेज कर सकता है.वर्चुअल डिसप्ले पर, सूचना का पेंडिंग इंटेंट लॉन्च करें और उस डिसप्ले का वीडियो कैप्चर बनाएं.
कनेक्ट किए गए डिवाइस से कनेक्शन बनाएं और कनेक्ट किए गए डिवाइस पर वर्चुअल डिसप्ले ओवर स्ट्रीम करें.
VirtualDevice
एपीआई की मदद से, कनेक्ट किए गए डिवाइस से इनपुट इवेंट को स्थानीय डिवाइस में वापस इंजेक्ट करें.जब उपयोगकर्ता रिमोट डिवाइस पर स्ट्रीमिंग ऐप्लिकेशन बंद करता है, तो स्ट्रीम बंद करें और
VirtualDevice
इंस्टेंस को बंद करें. इस दौरान, पहले से स्ट्रीमिंग में चल रहा ऐप्लिकेशन, लोकल डिवाइस पर बैकग्राउंड में चलता है और कनेक्शन बंद हो जाता है.अगर ज़रूरी हो, तो ऐप्लिकेशन की स्ट्रीमिंग फिर से शुरू करने के लिए, कनेक्ट किए गए डिवाइस से और सिग्नल मिलने का इंतज़ार करें.
ऐप्लिकेशन की ज़िम्मेदारी, रिमोट डिवाइस से कनेक्ट करने, सीडीएम को कनेक्टिविटी की स्थिति की जानकारी देने, और सीडीडी में बताई गई सुरक्षा से जुड़ी ज़रूरी शर्तों को लागू करने की होती है.
COMPANION_DEVICE_APP_STREAMING भूमिका के लिए ज़रूरी शर्तें
जब उपयोगकर्ता किसी डिवाइस से ऐप्लिकेशन स्ट्रीमिंग ऐप्लिकेशन को जोड़ता है, तो सीडीएम COMPANION_DEVICE_APP_STREAMING
भूमिका देता है. यह भूमिका किसी डिवाइस प्रोफ़ाइल से जुड़ी होती है. इसलिए, इस प्रोफ़ाइल से मैच करने वाले Play Store में कौनसे ऐप्लिकेशन जोड़े जा सकते हैं, इस पर कुछ कंट्रोल होता है. COMPANION_DEVICE_APP_STREAMING
भूमिका से जुड़ी ज़रूरी शर्तों की सूची के लिए, Android पर भूमिकाएं देखें. ज़्यादा जानकारी के लिए, अपने Google पीओसी से संपर्क करें.
COMPANION_DEVICE_APP_STREAMING भूमिका के लिए उपलब्ध सुविधाएं
ऐप्लिकेशन स्ट्रीमिंग करने के लिए, COMPANION_DEVICE_APP_STREAMING
भूमिका यह मानती है कि भूमिका रखने वाले ऐप्लिकेशन में ये सुविधाएं और व्यवहार हैं:
- अन्य डिवाइसों से कनेक्शन बनाएं और उन्हें मैनेज करें.
- भरोसेमंद वर्चुअल डिसप्ले बनाएं और मैनेज करें. इनमें अनलॉक किए गए डिसप्ले भी शामिल हैं. इसके लिए, यह तरीका अपनाएं:
- वर्चुअल डिसप्ले पर गतिविधियां शुरू करें.
- कनेक्ट किए गए डिवाइस पर स्ट्रीम किए जा रहे ऐप्लिकेशन पर होने वाले इवेंट को, स्थानीय डिवाइस पर वापस इंजेक्ट करना. जैसे, फ़ोन पर मौजूद एक ही निर्देशांक पर टैबलेट पर टच इवेंट चलाना.
- स्ट्रीम किए जा रहे ऐप्लिकेशन का ऑडियो डेटा कैप्चर करना.
- जब कोई ऐप्लिकेशन माइक्रोफ़ोन का इस्तेमाल कर रहा हो, तो स्ट्रीम किए जा रहे डिवाइस के माइक्रोफ़ोन की स्ट्रीम को, कनेक्ट किए गए डिवाइस के माइक्रोफ़ोन की स्ट्रीम से बदलना.
- स्ट्रीम किए जा रहे ऐप्लिकेशन के कैमरे का इस्तेमाल करते समय, लोकल डिवाइस के कैमरे की स्ट्रीम को कनेक्ट किए गए डिवाइस के कैमरे की स्ट्रीम से बदलना.
- लोकल डिवाइस से कनेक्ट किए गए डिवाइस पर सूचनाएं मैनेज और स्ट्रीम करें. साथ ही, सूचनाओं पर कार्रवाइयां करें.
- कनेक्ट किए गए डिवाइस पर, स्थानीय डिवाइस से मेटाडेटा स्ट्रीम करें. जैसे, स्थानीय डिवाइस पर उपलब्ध ऐप्लिकेशन की सूची.
- डिवाइस की पुष्टि करने का अनुरोध करें.