Android 13 में, ऐप्लिकेशन स्ट्रीमिंग की सुविधा से फ़ोन, कनेक्ट किए गए डिवाइसों पर अपने ऐप्लिकेशन स्ट्रीम कर सकते हैं. साथ ही, उन डिवाइसों को ऐप्लिकेशन के साथ इंटरैक्ट करने की अनुमति मिलती है. COMPANION_DEVICE_APP_STREAMING
की नई भूमिका से, कोई ऐप्लिकेशन कनेक्ट किए गए रिमोट डिवाइसों के लिए प्रॉक्सी बना सकता है और उन्हें मैनेज कर सकता है. इससे लोकल डिवाइस से रिमोट डिवाइस पर ऐप्लिकेशन स्ट्रीम किए जा सकते हैं. COMPANION_DEVICE_APP_STREAMING की भूमिका वाला ऐप्लिकेशन, वर्चुअल डिसप्ले बनाने, उस पर कोई ऐप्लिकेशन लॉन्च करने, और फिर लॉन्च किए गए ऐप्लिकेशन का वीडियो किसी दूसरे डिवाइस पर स्ट्रीम करने की अनुमतियां पा सकता है. भूमिका वाला ऐप्लिकेशन, रिमोट डिवाइस से मिले इनपुट और माइक्रोफ़ोन के इवेंट को लोकल डिवाइस में भी डाल सकता है. इससे ऐसा लगता है कि वह डिवाइस, पेरिफ़ेरल के तौर पर कनेक्ट किया गया है.
वास्तुकला
Android 13 से, नया वर्चुअल डिवाइस मैनेजर और कंपैनियन डिवाइस मैनेजर (सीडीएम) ऐप्लिकेशन स्ट्रीमिंग और रिमोट, कनेक्ट किए गए डिवाइसों के साथ इंटरैक्शन की सुविधा देने के लिए, अहम बिल्डिंग ब्लॉक के तौर पर काम करते हैं.
वर्चुअल डिवाइस मैनेजर
ऐप्लिकेशन स्ट्रीमिंग, वर्चुअल डिसप्ले की मदद से काम करती है. वर्चुअल डिवाइस मैनेजर, एक वर्चुअल डिसप्ले बनाता है. यह दिखने वाले प्राइमरी डिसप्ले से अलग होता है. जब उपयोगकर्ता, किसी ऐप्लिकेशन को स्ट्रीम करने की अनुमति देता है, तो वह ऐप्लिकेशन वर्चुअल डिसप्ले पर लॉन्च या ट्रांसफ़र हो जाता है. वर्चुअल डिसप्ले का कॉन्टेंट, वीडियो स्ट्रीम के तौर पर कनेक्ट किए गए डिवाइस पर ट्रांसफ़र किया जाता है, ताकि उसे दिखाया जा सके.
वर्चुअल डिवाइस मैनेजर में ऐसे एपीआई शामिल होते हैं जिनकी मदद से, इंस्टेंस बनाए, रजिस्टर,
और मैनेज किए जा सकते हैं
VirtualDevice.
VirtualDevice इंस्टेंस, कनेक्ट किए गए डिवाइस और उसकी क्षमताओं के लिए प्रॉक्सी के तौर पर काम करता है. VirtualDevice इंस्टेंस, कनेक्ट किए गए डिवाइस को आने वाली ऐप्लिकेशन स्ट्रीम को पाने, दिखाने, और उसके साथ इंटरैक्ट करने की अनुमति देता है. इसके लिए, वह ये काम करता है:
- कनेक्ट किए गए डिवाइस के डिसप्ले पर दिखाने के लिए, a
VirtualDisplayइंस्टेंस बनाना. - कनेक्ट किए गए डिवाइस के माइक्रोफ़ोन से मिली, ऑडियो स्ट्रीम को चलाने के लिए, लोकल डिवाइस में डालना.
- कनेक्ट किए गए डिवाइस के कीबोर्ड से मिले, रिमोट इनपुट इवेंट को चलाने के लिए, लोकल डिवाइस में डालना.
कंपैनियन डिवाइस मैनेजर
सीडीएम, कनेक्टिविटी की स्थिति को मैनेज करता है. साथ ही, भूमिका से जुड़ी उन ज़रूरी शर्तों को लागू करता है जिन्हें ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए पूरा करना ज़रूरी है.
यहां दी गई इमेज में, ऐप्लिकेशन स्ट्रीमिंग के दौरान लोकल और रिमोट डिवाइस के बीच होने वाले इंटरैक्शन दिखाए गए हैं:
पहली इमेज. ऐप्लिकेशन स्ट्रीमिंग के दौरान लोकल और रिमोट डिवाइस के बीच होने वाले इंटरैक्शन
साथी ऐप्लिकेशन स्ट्रीमिंग की भूमिका लागू करना
ओईएम, COMPANION_DEVICE_APP_STREAMING की भूमिका वाला ऐप्लिकेशन लागू कर सकते हैं. इससे उनके डिवाइसों पर, क्रॉस-डिवाइस पर बेहतर और सुरक्षित अनुभव दिया जा सकता है.
ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए, वर्चुअल डिवाइस बनाने के लिए, किसी ऐप्लिकेशन के पास COMPANION_DEVICE_APP_STREAMING की भूमिका होनी चाहिए. भूमिका मिलने पर, ऐप्लिकेशन को
CREATE_VIRTUAL_DEVICE की अनुमति मिलती है. इससे ऐप्लिकेशन, वर्चुअल डिवाइस बना सकता है. भूमिका वाले ऐप्लिकेशन से, ऐप्लिकेशन स्ट्रीमिंग की सुविधा लागू करने की उम्मीद की जाती है. इसके लिए, उन्हें VirtualDevice इंस्टेंस बनाना होता है. यह इंस्टेंस, कनेक्ट किए गए डिवाइस के लिए प्रॉक्सी के तौर पर काम करता है. VirtualDevice क्लास, ऐसे तरीके उपलब्ध कराती है जिनकी मदद से, वर्चुअल डिसप्ले का कंपोज़िट किया गया सर्फ़ेस निकाला जा सकता है. यह सर्फ़ेस, किसी दूसरे डिवाइस पर स्ट्रीम करने के लिए सही होता है. VirtualDevice क्लास, रिमोट डिवाइस पर होने वाले इनपुट इवेंट को लोकल डिवाइस में डालने के लिए एपीआई भी उपलब्ध कराती है. इससे लोकल डिवाइस पर चल रहा कोई ऐप्लिकेशन, ऐसा दिखता है जैसे वह रिमोट डिवाइस पर चल रहा हो.
साथी ऐप्लिकेशन स्ट्रीमिंग की भूमिका लागू करने के लिए, यह तरीका अपनाएं:
ऐसा ऐप्लिकेशन बनाएं जो मेनिफ़ेस्ट में
REQUEST_COMPANION_PROFILE_APP_STREAMINGकी अनुमति का अनुरोध करता हो.ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए, उपयोगकर्ता से ऐप्लिकेशन को अनुमति देने के लिए कहें.
भूमिका का अनुरोध करने के लिए, सीडीएम
AssociationRequestइंस्टेंस बनाएं.COMPANION_DEVICE_APP_STREAMINGभूमिका मिलने पर, ऐप्लिकेशन को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 की भूमिका वाले ऐप्लिकेशन में ये क्षमताएं और व्यवहार होने चाहिए:
- दूसरे डिवाइसों से कनेक्शन बनाना और उन्हें मैनेज करना.
- भरोसेमंद वर्चुअल डिसप्ले बनाना और उन्हें मैनेज करना. इनमें अनलॉक किए गए डिसप्ले भी शामिल हैं. इसके लिए, यह तरीका अपनाएं:
- वर्चुअल डिसप्ले पर गतिविधियां शुरू करना.
- कनेक्ट किए गए डिवाइस पर स्ट्रीम किए गए ऐप्लिकेशन पर होने वाले इवेंट को लोकल डिवाइस पर वापस डालना. जैसे, टैबलेट पर किसी जगह पर टच करने पर, फ़ोन पर भी उसी जगह पर टच इवेंट चलाना.
- स्ट्रीम किए गए ऐप्लिकेशन से ऑडियो डेटा कैप्चर करना.
- स्ट्रीम किए गए ऐप्लिकेशन के माइक्रोफ़ोन का इस्तेमाल करते समय, लोकल डिवाइस की माइक्रोफ़ोन स्ट्रीम को कनेक्ट किए गए डिवाइस की माइक्रोफ़ोन स्ट्रीम से बदलना.
- स्ट्रीम किए गए ऐप्लिकेशन के कैमरे का इस्तेमाल करते समय, लोकल डिवाइस की कैमरा स्ट्रीम को कनेक्ट किए गए डिवाइस की कैमरा स्ट्रीम से बदलना.
- लोकल डिवाइस से कनेक्ट किए गए डिवाइस पर सूचनाएं मैनेज और स्ट्रीम करना. साथ ही, सूचनाओं पर कार्रवाई करना.
- लोकल डिवाइस से मेटाडेटा स्ट्रीम करना. जैसे, कनेक्ट किए गए डिवाइस पर लोकल डिवाइस पर उपलब्ध ऐप्लिकेशन की सूची.
- डिवाइस की पुष्टि का अनुरोध करना.