কম্প্যানিয়ন অ্যাপ স্ট্রিমিং

Android 13-এ, অ্যাপ স্ট্রিমিং ফিচারের মাধ্যমে ফোন কানেক্ট করা ডিভাইসে অ্যাপ স্ট্রিম করতে পারে এবং সেইসব ডিভাইস অ্যাপের সাথে ইন্টার‍্যাক্ট করতে পারে। নতুন COMPANION_DEVICE_APP_STREAMING ভূমিকা কোনও অ্যাপকে কানেক্ট করা রিমোট ডিভাইসের জন্য প্রক্সি তৈরি ও ম্যানেজ করতে দেয়, যাতে লোকাল ডিভাইস থেকে রিমোট ডিভাইসে অ্যাপ স্ট্রিম করা যায়। COMPANION_DEVICE_APP_STREAMING ভূমিকা পালনকারী অ্যাপটি ভার্চুয়াল ডিসপ্লে তৈরি করা, এতে অ্যাপ লঞ্চ করা এবং লঞ্চ করা অ্যাপের ভিডিও অন্য ডিভাইসে স্ট্রিম করার অনুমতি পেতে পারে। এছাড়াও, রোল হোল্ডার অ্যাপ রিমোট ডিভাইস থেকে পাওয়া ইনপুট ও মাইক্রোফোন ইভেন্ট লোকাল ডিভাইসে ইনজেক্ট করতে পারে, যেন সেই ডিভাইসটি পেরিফেরাল হিসেবে কানেক্ট করা আছে।

স্থাপত্যশিল্প

Android 13 থেকে শুরু করে, নতুন ভার্চুয়াল ডিভাইস ম্যানেজার এবং কম্প্যানিয়ন ডিভাইস ম্যানেজার (CDM) অ্যাপ স্ট্রিমিং এবং রিমোট, কানেক্ট করা ডিভাইসের সাথে ইন্টার‍্যাকশন করার জন্য মূল বিল্ডিং ব্লক তৈরি করে।

ভার্চুয়াল ডিভাইস ম্যানেজার

ভার্চুয়াল ডিসপ্লে-এর সুবিধা নিয়ে অ্যাপ স্ট্রিমিং কাজ করে। ভার্চুয়াল ডিভাইস ম্যানেজার একটি ভার্চুয়াল ডিসপ্লে তৈরি করে যা দৃশ্যমান প্রাইমারি ডিসপ্লে থেকে আলাদা। ব্যবহারকারী কোনও অ্যাপ স্ট্রিম করা শুরু করার সম্মতি দিলে, ভার্চুয়াল ডিসপ্লেতে অ্যাপটি লঞ্চ করা হয় বা ট্রান্সফার করা হয়। ভার্চুয়াল ডিসপ্লের কন্টেন্ট, কানেক্ট করা ডিভাইসে ভিডিও স্ট্রিম হিসেবে ট্রান্সফার করা হয় যাতে সেটি দেখানো যায়।

ভার্চুয়াল ডিভাইস ম্যানেজারে API অন্তর্ভুক্ত থাকে যা VirtualDevice ইনস্ট্যান্স তৈরি, রেজিস্টার ও ম্যানেজ করতে সাহায্য করে।

VirtualDevice ইনস্ট্যান্স হল কানেক্ট করা ডিভাইস ও সেটির ক্ষমতার প্রক্সি। VirtualDevice ইনস্ট্যান্স নিম্নলিখিত কাজগুলি করে, ইনকামিং অ্যাপ স্ট্রিম গ্রহণ, ডিসপ্লে ও সেটির সাথে ইন্টার‍্যাক্ট করার জন্য কানেক্ট করা ডিভাইসকে সক্ষম করে:

  • কানেক্ট করা ডিভাইসের ডিসপ্লেতে দেখানোর জন্য VirtualDisplay ইনস্ট্যান্স তৈরি করা হচ্ছে।
  • প্লেব্যাকের জন্য লোকাল ডিভাইসে কানেক্ট করা ডিভাইসের মাইক্রোফোনের মতো রিমোট অডিও স্ট্রিম ইনজেক্ট করা।
  • কানেক্ট করা ডিভাইসের কীবোর্ডের মতো রিমোট ইনপুট ইভেন্ট প্লেব্যাকের জন্য লোকাল ডিভাইসে ইনজেক্ট করা।

Companion Device Manager

অ্যাপ স্ট্রিমিং চালু করার জন্য CDM কানেক্টিভিটি স্টেট ম্যানেজ করে এবং ভূমিকা সংক্রান্ত প্রয়োজনীয়তা প্রয়োগ করে যা অবশ্যই পূরণ করতে হবে।

অ্যাপ স্ট্রিমিংয়ের সময় লোকাল ও রিমোট ডিভাইসের মধ্যে ইন্টার‍্যাকশন কেমন হয় তা নিচের ছবিতে দেখানো হয়েছে:

অ্যাপ-স্ট্রিমিং-ইন্টার‍্যাকশন

ছবি ১. অ্যাপ স্ট্রিমিং চলাকালীন লোকাল ও রিমোট ডিভাইসের মধ্যে ইন্টার‍্যাকশন

কম্প্যানিয়ন অ্যাপ স্ট্রিমিং রোলের প্রয়োগ

OEM-রা তাদের ডিভাইসে একটি সমৃদ্ধ ও সুরক্ষিত ক্রস-ডিভাইস অভিজ্ঞতা চালু করতে COMPANION_DEVICE_APP_STREAMING ভূমিকা সহ একটি অ্যাপ প্রয়োগ করতে পারে।

অ্যাপ স্ট্রিমিং চালু করার জন্য ভার্চুয়াল ডিভাইস তৈরি করতে, কোনও অ্যাপকে অবশ্যই COMPANION_DEVICE_APP_STREAMING রোলের রোল হোল্ডার হতে হবে। ভূমিকা প্রদান করা হলে, অ্যাপটি CREATE_VIRTUAL_DEVICE অনুমতি পায়, যা অ্যাপটিকে ভার্চুয়াল ডিভাইস তৈরি করতে দেয়। কানেক্ট করা ডিভাইসের জন্য প্রক্সি হিসেবে কাজ করে এমন VirtualDevice ইনস্ট্যান্স তৈরি করে রোল হোল্ডারদের অ্যাপ স্ট্রিমিং প্রয়োগ করতে হবে। VirtualDevice ক্লাস এমন পদ্ধতি প্রদান করে যা অন্য ডিভাইসে স্ট্রিম করার উপযুক্ত ভার্চুয়াল ডিসপ্লের কম্পোজিট করা সারফেস এক্সট্র্যাক্ট করার সুবিধা দেয়। VirtualDevice ক্লাস এছাড়াও, রিমোট ডিভাইসে ঘটা ইনপুট ইভেন্ট লোকাল ডিভাইসে ইনজেক্ট করার জন্য API প্রদান করে, যার ফলে লোকাল ডিভাইসে চলা অ্যাপ এমনভাবে দেখা যায় যেন এটি রিমোট ডিভাইসে নেটিভভাবে চলছে।

কম্প্যানিয়ন অ্যাপ স্ট্রিমিং রোল প্রয়োগ করতে এইসব ধাপ অনুসরণ করুন:

  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 API-এর মাধ্যমে কানেক্ট করা ডিভাইস থেকে ইনপুট ইভেন্ট লোকাল ডিভাইসে ইনজেক্ট করুন।

  8. ব্যবহারকারী রিমোট ডিভাইসে স্ট্রিমিং অ্যাপ বন্ধ করে দিলে, স্ট্রিম শেষ করুন এবং VirtualDevice ইনস্ট্যান্স বন্ধ করুন। এই সময়, আগে থেকে স্ট্রিমিং অ্যাপ স্থানীয় ডিভাইসের ব্যাকগ্রাউন্ডে চলে এবং কানেকশন বন্ধ হয়ে যায়।

  9. প্রয়োজন হলে, অ্যাপ স্ট্রিমিং আবার চালু করতে কানেক্ট করা ডিভাইস থেকে আরও সিগন্যালের জন্য অপেক্ষা করুন।

রিমোট ডিভাইসের সাথে কানেক্ট করা, CDM-কে কানেক্টিভিটি স্ট্যাটাস রিপোর্ট করা এবং CDD-তে বর্ণিত নিরাপত্তা সংক্রান্ত প্রয়োজনীয়তা প্রয়োগ করার দায়িত্ব অ্যাপের।

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 ভূমিকা ধরে নেয় যে ভূমিকা ধারকের অ্যাপের নিম্নলিখিত ক্ষমতা ও আচরণ আছে:

  • অন্যান্য ডিভাইসের সাথে কানেকশন তৈরি ও ম্যানেজ করা।
  • আনলক করা ডিসপ্লে সহ বিশ্বস্ত ভার্চুয়াল ডিসপ্লে তৈরি ও ম্যানেজ করুন, এগুলি নিম্নলিখিত:
    • ভার্চুয়াল ডিসপ্লেতে অ্যাক্টিভিটি শুরু করুন।
    • কানেক্ট করা ডিভাইসে স্ট্রিম করা অ্যাপে হওয়া ইভেন্টকে লোকাল ডিভাইসে ইনজেক্ট করা, যেমন, ফোনে একই কোঅর্ডিনেটে ট্যাবলেটে টাচ ইভেন্ট প্লে করা।
    • স্ট্রিম করা অ্যাপ থেকে অডিও ডেটা ক্যাপচার করা।
    • স্ট্রিম করা অ্যাপ মাইক্রোফোন ব্যবহার করার সময়, কানেক্ট করা ডিভাইসের মাইক্রোফোন স্ট্রিম দিয়ে লোকাল ডিভাইসের মাইক্রোফোন স্ট্রিম পরিবর্তন করুন।
    • কোনও স্ট্রিম করা অ্যাপ ক্যামেরা ব্যবহার করার সময়, লোকাল ডিভাইসের ক্যামেরা স্ট্রিমকে কানেক্ট করা ডিভাইসের ক্যামেরা স্ট্রিম দিয়ে পাল্টে দিন।
  • স্থানীয় ডিভাইস থেকে কানেক্ট করা ডিভাইসে বিজ্ঞপ্তি ম্যানেজ ও স্ট্রিম করুন এবং বিজ্ঞপ্তির উপর অ্যাকশন নিন।
  • কানেক্ট করা ডিভাইসে লোকাল ডিভাইস থেকে স্ট্রিম করা মেটাডেটা, যেমন লোকাল ডিভাইসে উপলভ্য অ্যাপের তালিকা।
  • ডিভাইস যাচাইকরণের অনুরোধ করুন।