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