साथी ऐप्लिकेशन स्ट्रीमिंग

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 क्लास, रिमोट डिवाइस पर होने वाले इनपुट इवेंट को लोकल डिवाइस में इंजेक्ट करने के लिए एपीआई भी उपलब्ध कराती है. इससे, लोकल डिवाइस पर चल रहे ऐप्लिकेशन को ऐसा दिखता है जैसे वह रिमोट डिवाइस पर नेटिव तौर पर चल रहा हो.

साथी ऐप्लिकेशन स्ट्रीमिंग की भूमिका लागू करने के लिए, यह तरीका अपनाएं:

  1. ऐसा ऐप्लिकेशन बनाएं जो मेनिफ़ेस्ट में REQUEST_COMPANION_PROFILE_APP_STREAMING अनुमति का अनुरोध करता हो.

  2. उपयोगकर्ता से ऐप्लिकेशन स्ट्रीमिंग की अनुमति देने के लिए कहें.

  3. COMPANION_DEVICE_APP_STREAMING की भूमिका का अनुरोध करने के लिए, सीडीएम AssociationRequest इंस्टेंस बनाएं. भूमिका दिए जाने पर, ऐप्लिकेशन को CREATE_VIRTUAL_DEVICE की अनुमति मिलती है.

  4. VirtualDevice इंस्टेंस बनाने के लिए, VirtualDeviceManager#create() को कॉल करें. VirtualDevice इंस्टेंस की मदद से, ऐप्लिकेशन वर्चुअल डिसप्ले और वर्चुअल इनपुट बना सकता है और उन्हें मैनेज कर सकता है.

  5. वर्चुअल डिसप्ले पर, सूचना का पेंडिंग इंटेंट लॉन्च करें और उस डिसप्ले का वीडियो कैप्चर बनाएं.

  6. कनेक्ट किए गए डिवाइस से कनेक्ट करें और कनेक्ट किए गए डिवाइस पर वर्चुअल डिसप्ले को स्ट्रीम करें.

  7. VirtualDevice एपीआई की मदद से, कनेक्ट किए गए डिवाइस से इनपुट इवेंट को स्थानीय डिवाइस में वापस इंजेक्ट करें.

  8. जब उपयोगकर्ता रिमोट डिवाइस पर स्ट्रीमिंग ऐप्लिकेशन बंद करता है, तो स्ट्रीम बंद करें और VirtualDevice इंस्टेंस को बंद करें. इस दौरान, पहले से स्ट्रीमिंग में चल रहा ऐप्लिकेशन, लोकल डिवाइस पर बैकग्राउंड में चलता है और कनेक्शन बंद हो जाता है.

  9. अगर ज़रूरी हो, तो ऐप्लिकेशन की स्ट्रीमिंग फिर से शुरू करने के लिए, कनेक्ट किए गए डिवाइस से और सिग्नल मिलने का इंतज़ार करें.

ऐप्लिकेशन की ज़िम्मेदारी, रिमोट डिवाइस से कनेक्ट करने, सीडीएम को कनेक्टिविटी की स्थिति की जानकारी देने, और सीडीडी में बताई गई सुरक्षा से जुड़ी ज़रूरी शर्तों को लागू करने की होती है.

COMPANION_DEVICE_APP_STREAMING भूमिका के लिए ज़रूरी शर्तें

जब उपयोगकर्ता किसी ऐप्लिकेशन स्ट्रीमिंग ऐप्लिकेशन को किसी डिवाइस से जोड़ता है, तब CDM उसे COMPANION_DEVICE_APP_STREAMING की भूमिका देता है. यह भूमिका किसी डिवाइस प्रोफ़ाइल से जुड़ी होती है. इसलिए, इस प्रोफ़ाइल से मैच करने वाले Play Store में कौनसे ऐप्लिकेशन जोड़े जा सकते हैं, इस पर कुछ कंट्रोल होता है. COMPANION_DEVICE_APP_STREAMING भूमिका से जुड़ी ज़रूरी शर्तों की सूची के लिए, Android पर भूमिकाएं देखें. ज़्यादा जानकारी के लिए, Google के प्रतिनिधि से संपर्क करें.

COMPANION_DEVICE_APP_STREAMING भूमिका धारक की क्षमताएं

ऐप्लिकेशन स्ट्रीमिंग करने के लिए, COMPANION_DEVICE_APP_STREAMING की भूमिका के मुताबिक यह माना जाता है कि रोल होल्डर ऐप्लिकेशन में ये सुविधाएं और व्यवहार होते हैं:

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