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

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

भवन निर्माण

Android 13 से, Virtual Device Manager और Companion Device Manager (CDM), ऐप्लिकेशन स्ट्रीमिंग और रिमोट से कनेक्ट किए गए डिवाइसों के साथ इंटरैक्ट करने की सुविधा देने वाले मुख्य बिल्डिंग ब्लॉक हैं.

वर्चुअल डिवाइस मैनेजर

ऐप्लिकेशन स्ट्रीमिंग की सुविधा, वर्चुअल डिसप्ले का इस्तेमाल करके काम करती है. Virtual Device Manager, एक वर्चुअल डिसप्ले बनाता है. यह डिसप्ले, दिखने वाले प्राइमरी डिसप्ले से अलग होता है. जब उपयोगकर्ता किसी ऐप्लिकेशन को स्ट्रीम करने की सहमति देता है, तो ऐप्लिकेशन को वर्चुअल डिसप्ले पर लॉन्च किया जाता है या उस पर ट्रांसफ़र किया जाता है. वर्चुअल डिसप्ले का कॉन्टेंट, कनेक्ट किए गए डिवाइस पर वीडियो स्ट्रीम के तौर पर ट्रांसफ़र किया जाता है, ताकि उसे दिखाया जा सके.

Virtual Device Manager में ऐसे एपीआई शामिल होते हैं जिनकी मदद से, VirtualDevice इंस्टेंस बनाए, रजिस्टर किए, और मैनेज किए जा सकते हैं.

VirtualDevice इंस्टेंस, कनेक्ट किए गए डिवाइस और उसकी क्षमताओं के लिए प्रॉक्सी होता है. VirtualDevice इंस्टेंस, कनेक्ट किए गए डिवाइस को ऐप्लिकेशन स्ट्रीम पाने, उसे दिखाने, और उससे इंटरैक्ट करने की सुविधा देता है. इसके लिए, वह ये काम करता है:

  • कनेक्ट किए गए डिवाइस के डिसप्ले पर दिखाने के लिए, VirtualDisplay इंस्टेंस बनाना.
  • कनेक्ट किए गए डिवाइस के माइक्रोफ़ोन से, रिमोट ऑडियो स्ट्रीम को लोकल डिवाइस में डालकर उसे चलाया जा सकता है.
  • कनेक्ट किए गए डिवाइस के कीबोर्ड जैसे रिमोट इनपुट इवेंट को, चलाने के लिए लोकल डिवाइस में इंजेक्ट करना.

कंपैनियन डिवाइस मैनेजर

सीडीएम, कनेक्टिविटी की स्थिति को मैनेज करता है. साथ ही, भूमिका से जुड़ी उन ज़रूरी शर्तों को लागू करता है जिन्हें ऐप्लिकेशन स्ट्रीमिंग की सुविधा चालू करने के लिए पूरा करना ज़रूरी है.

यहां दिए गए डायग्राम में, ऐप्लिकेशन स्ट्रीमिंग के दौरान लोकल और रिमोट डिवाइस के बीच होने वाली इंटरैक्शन को दिखाया गया है:

app-streaming-interaction

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

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

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 भूमिका का अनुरोध करने के लिए, CDM AssociationRequest इंस्टेंस बनाएं. भूमिका असाइन किए जाने पर, ऐप्लिकेशन को CREATE_VIRTUAL_DEVICE अनुमति मिलती है.

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

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

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

  7. VirtualDevice एपीआई के ज़रिए, कनेक्ट किए गए डिवाइस से इनपुट इवेंट को लोकल डिवाइस में वापस इंजेक्ट करता है.

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

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

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

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

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

COMPANION_DEVICE_APP_STREAMING की भूमिका निभाने वाले व्यक्ति के पास ये अनुमतियां होती हैं

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

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