অ্যান্ড্রয়েড ১৩-এ, অ্যাপ স্ট্রিমিং ফিচারটি ফোনগুলোকে সংযুক্ত ডিভাইসগুলোতে তাদের অ্যাপ স্ট্রিম করতে এবং সেই ডিভাইসগুলোকে অ্যাপগুলোর সাথে ইন্টারঅ্যাক্ট করতে দেয়। একটি নতুন COMPANION_DEVICE_APP_STREAMING রোল একটি অ্যাপকে সংযুক্ত রিমোট ডিভাইসগুলোর জন্য প্রক্সি তৈরি ও পরিচালনা করার সুযোগ দেয়, যার মাধ্যমে লোকাল ডিভাইস থেকে রিমোট ডিভাইসে অ্যাপ স্ট্রিম করা যায়। COMPANION_DEVICE_APP_STREAMING রোলটি ধারণকারী অ্যাপটি একটি ভার্চুয়াল ডিসপ্লে তৈরি করার, তাতে একটি অ্যাপ চালু করার এবং তারপর চালু করা অ্যাপটির ভিডিও অন্য ডিভাইসে স্ট্রিম করার অনুমতি পেতে পারে। রোলধারী অ্যাপটি একটি রিমোট ডিভাইস থেকে প্রাপ্ত ইনপুট এবং মাইক্রোফোন ইভেন্টগুলোকে লোকাল ডিভাইসে পুনরায় ইনজেক্ট করতে পারে, ঠিক যেন সেই ডিভাইসটি একটি পেরিফেরাল হিসেবে সংযুক্ত আছে।
স্থাপত্য
অ্যান্ড্রয়েড ১৩ থেকে শুরু করে, নতুন ভার্চুয়াল ডিভাইস ম্যানেজার এবং কম্প্যানিয়ন ডিভাইস ম্যানেজার (সিডিএম) অ্যাপ স্ট্রিমিং এবং দূরবর্তী, সংযুক্ত ডিভাইসগুলোর সাথে ইন্টারঅ্যাকশন সমর্থন করার মূল ভিত্তি হিসেবে কাজ করে।
ভার্চুয়াল ডিভাইস ম্যানেজার
অ্যাপ স্ট্রিমিং ভার্চুয়াল ডিসপ্লে ব্যবহার করে কাজ করে। ভার্চুয়াল ডিভাইস ম্যানেজার একটি ভার্চুয়াল ডিসপ্লে তৈরি করে যা দৃশ্যমান প্রাথমিক ডিসপ্লে থেকে আলাদা। যখন ব্যবহারকারী কোনো অ্যাপ স্ট্রিমিং শুরু করার জন্য সম্মতি দেন, তখন অ্যাপটি ভার্চুয়াল ডিসপ্লেতে চালু হয় বা সেখানে স্থানান্তরিত হয়। ভার্চুয়াল ডিসপ্লের বিষয়বস্তু প্রদর্শনের জন্য একটি ভিডিও স্ট্রিমের মাধ্যমে সংযুক্ত ডিভাইসে স্থানান্তরিত হয়।
ভার্চুয়াল ডিভাইস ম্যানেজারে এমন এপিআই (API) অন্তর্ভুক্ত রয়েছে যা 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ইনস্ট্যান্সের মাধ্যমে অ্যাপটি ভার্চুয়াল ডিসপ্লে এবং ভার্চুয়াল ইনপুট তৈরি ও পরিচালনা করতে পারে।ভার্চুয়াল ডিসপ্লেতে নোটিফিকেশনটির পেন্ডিং ইন্টেন্টটি চালু করুন এবং সেই ডিসপ্লেটির একটি ভিডিও ক্যাপচার তৈরি করুন।
সংযুক্ত ডিভাইসটির সাথে একটি সংযোগ তৈরি করুন এবং ভার্চুয়াল ডিসপ্লেটি সেই সংযুক্ত ডিভাইসে স্ট্রিম করুন।
VirtualDeviceAPI-এর মাধ্যমে সংযুক্ত ডিভাইস থেকে ইনপুট ইভেন্টগুলো স্থানীয় ডিভাইসে ফেরত পাঠান।যখন ব্যবহারকারী রিমোট ডিভাইসে স্ট্রিমিং অ্যাপটি বন্ধ করেন, তখন স্ট্রিমটি শেষ করুন এবং
VirtualDeviceইনস্ট্যান্সটি বন্ধ করে দিন। এই পর্যায়ে, পূর্বে স্ট্রিমিং করা অ্যাপটি লোকাল ডিভাইসে ব্যাকগ্রাউন্ডে চলতে থাকে এবং সংযোগটি বন্ধ হয়ে যায়।প্রয়োজনে, অ্যাপ স্ট্রিমিং পুনরায় শুরু করতে সংযুক্ত ডিভাইস থেকে আরও সংকেতের জন্য অপেক্ষা করুন।
অ্যাপটি রিমোট ডিভাইসের সাথে সংযোগ স্থাপন, CDM-কে সংযোগের অবস্থা জানানো এবং CDD- তে বর্ণিত নিরাপত্তা বিধিগুলো কার্যকর করার জন্য দায়ী।
COMPANION_DEVICE_APP_STREAMING ভূমিকা ধারকের প্রয়োজনীয়তা
যখন ব্যবহারকারী কোনো ডিভাইসের সাথে একটি অ্যাপ স্ট্রিমিং অ্যাপ যুক্ত করেন, তখন সিডিএম (CDM) COMPANION_DEVICE_APP_STREAMING রোলটি প্রদান করে। এই রোলটি একটি ডিভাইস প্রোফাইলের সাথে যুক্ত থাকে, ফলে এই প্রোফাইলের সাথে মেলে এমন কোন অ্যাপগুলো প্লে স্টোরে যোগ করা যাবে তার উপর কিছুটা নিয়ন্ত্রণ থাকে। COMPANION_DEVICE_APP_STREAMING রোলের প্রয়োজনীয়তার তালিকার জন্য অ্যান্ড্রয়েড রোলস (Android roles) দেখুন। আরও তথ্যের জন্য আপনার গুগল পয়েন্ট অফ কন্ট্যাক্টের সাথে যোগাযোগ করুন।
COMPANION_DEVICE_APP_STREAMING ভূমিকা ধারকের ক্ষমতা
অ্যাপ স্ট্রিমিং সম্পাদন করার জন্য, COMPANION_DEVICE_APP_STREAMING রোলটি ধরে নেয় যে রোল হোল্ডার অ্যাপটির নিম্নলিখিত ক্যাপাবিলিটি এবং বিহেভিয়ার রয়েছে:
- অন্যান্য ডিভাইসের সাথে সংযোগ তৈরি ও পরিচালনা করুন।
- নিম্নলিখিতভাবে বিশ্বস্ত ভার্চুয়াল ডিসপ্লে তৈরি ও পরিচালনা করুন, যার মধ্যে আনলক করা ডিসপ্লে অন্তর্ভুক্ত রয়েছে:
- ভার্চুয়াল ডিসপ্লেতে কার্যক্রম শুরু করুন।
- সংযুক্ত ডিভাইসে স্ট্রিম করা অ্যাপে ঘটা ইভেন্টগুলো স্থানীয় ডিভাইসে ফিরিয়ে আনুন, যেমন ফোনের একই স্থানাঙ্কে ট্যাবলেটে একটি টাচ ইভেন্ট চালানো।
- স্ট্রিম করা অ্যাপ থেকে অডিও ডেটা ক্যাপচার করুন।
- যখন কোনো স্ট্রিম করা অ্যাপ মাইক্রোফোন ব্যবহার করছে, তখন স্থানীয় ডিভাইসের মাইক্রোফোন স্ট্রিমকে সংযুক্ত ডিভাইসের মাইক্রোফোন স্ট্রিম দিয়ে প্রতিস্থাপন করুন।
- যখন কোনো স্ট্রিম করা অ্যাপ ক্যামেরা ব্যবহার করছে, তখন স্থানীয় ডিভাইসের ক্যামেরা স্ট্রিমকে সংযুক্ত ডিভাইসের ক্যামেরা স্ট্রিম দিয়ে প্রতিস্থাপন করুন।
- স্থানীয় ডিভাইস থেকে সংযুক্ত ডিভাইসে নোটিফিকেশন পরিচালনা ও প্রেরণ করুন এবং নোটিফিকেশনের উপর ব্যবস্থা গ্রহণ করুন।
- স্থানীয় ডিভাইস থেকে সংযুক্ত ডিভাইসে মেটাডেটা স্ট্রিম করুন, যেমন স্থানীয় ডিভাইসে উপলব্ধ অ্যাপের তালিকা।
- ডিভাইস যাচাইকরণের অনুরোধ।