TV অ্যাপ তৈরি ও চালানো

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

গুরুত্বপূর্ণ: Google Play-তে Android TV অ্যাপ হিসেবে বিবেচিত হওয়ার জন্য আপনার অ্যাপকে অবশ্যই নির্দিষ্ট কিছু শর্ত পূরণ করতে হবে। আরও তথ্যের জন্য, টিভি অ্যাপের কোয়ালিটি নিবন্ধে তালিকাভুক্ত প্রয়োজনীয়তা দেখুন।

এই নির্দেশিকায় TV অ্যাপ তৈরি করার জন্য আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট কীভাবে প্রস্তুত করতে হয় এবং TV ডিভাইসে কোনও অ্যাপ চালানোর জন্য ন্যূনতম প্রয়োজনীয় পরিবর্তন সম্পর্কে বর্ণনা করা হয়েছে।

টিভির জন্য অ্যাপ ডিজাইন করা সম্পর্কে তথ্য পেতে, টিভির জন্য ডিজাইন দেখুন। এছাড়াও, Android TV GitHub রিপোজিটরি-তে নমুনা অ্যাপ দেখুন।

কোন মিডিয়া ফর্ম্যাট কাজ করে তা নির্ধারণ করা

Android TV-তে কাজ করে এমন কোডেক, প্রোটোকল ও ফর্ম্যাট সম্পর্কে তথ্য পেতে নিম্নলিখিত ডকুমেন্টেশন দেখুন:

টিভি প্রোজেক্ট সেট-আপ করা

এই বিভাগে, কীভাবে একটি টিভি প্রজেক্ট সেট-আপ করতে হয় তা আলোচনা করা হয়েছে, আপনি টিভি ডিভাইসে চালানোর জন্য কোনও বিদ্যমান Android অ্যাপ পরিবর্তন করছেন নাকি নতুন টিভি অ্যাপ তৈরি করছেন। আপনার যদি কোনও বিদ্যমান Android অ্যাপ থাকে, তাহলে Android TV সহায়তা যোগ করলে, আপনার বিদ্যমান অ্যাপ আর্কিটেকচার আবার ব্যবহার করার পাশাপাশি, আপনি টিভির জন্য একটি ইউজার ইন্টারফেস ডিজাইন করতে পারবেন।

টিভি ডিভাইসে চলে এমন অ্যাপ তৈরি করার সময় আপনি দুটি প্রধান কম্পোনেন্ট ব্যবহার করেন:

  • টিভির জন্য অ্যাক্টিভিটি: আপনার অ্যাপ্লিকেশন ম্যানিফেস্টে, টিভি ডিভাইসে চালানোর জন্য একটি অ্যাক্টিভিটি ঘোষণা করুন।
  • টিভি লাইব্রেরি: ঐচ্ছিকভাবে, টিভি ডিভাইসের জন্য উপলভ্য androidx লাইব্রেরি এক বা একাধিক অন্তর্ভুক্ত করুন, যা এই নির্দেশিকার অন্য বিভাগে তালিকাভুক্ত করা আছে। এইসব লাইব্রেরি ইউজার ইন্টারফেস তৈরি করার জন্য উইজেট প্রদান করে।

পূর্বশর্ত

টিভির জন্য অ্যাপ তৈরি করা শুরু করার আগে, আপনাকে অবশ্যই নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:

  • আপনার SDK টুল ভার্সন 24.0.0 বা তার পরবর্তী যেকোনও ভার্সনে আপডেট করুন।
    আপডেট করা SDK টুল আপনাকে টিভির জন্য অ্যাপ তৈরি ও পরীক্ষা করতে দেয়।
  • Android 5.0 (API 21) বা তার পরবর্তী যেকোনও ভার্সন দিয়ে আপনার SDK আপডেট করুন।
    আপডেট করা প্ল্যাটফর্ম ভার্সন TV অ্যাপের জন্য নতুন API প্রদান করে।
  • আপনার অ্যাপ প্রোজেক্ট তৈরি বা আপডেট করুন।
    টিভি ডিভাইসের জন্য নতুন API অ্যাক্সেস করতে, Android 5.0 (API লেভেল 21) বা এর পরের যেকোনও ভার্সনকে টার্গেট করে এমন প্রোজেক্ট তৈরি করুন বা আগে থেকে থাকা প্রোজেক্টে পরিবর্তন করুন।

টিভি অ্যাক্টিভিটি ঘোষণা করা

টিভিতে চালানোর জন্য তৈরি করা কোনও অ্যাপ্লিকেশনকে অবশ্যই তার ম্যানিফেস্টে TV-র জন্য লঞ্চার অ্যাক্টিভিটি ঘোষণা করতে হবে। এটি এর জন্য CATEGORY_LEANBACK_LAUNCHERইন্টেন্ট ফিল্টার ব্যবহার করে। এই ফিল্টার আপনার অ্যাপকে টিভির জন্য চালু করা হয়েছে বলে শনাক্ত করে এবং Google Play এটিকে টিভি অ্যাপ হিসেবে শনাক্ত করতে পারে। কোনও ব্যবহারকারী তার টিভির হোম স্ক্রিনে আপনার অ্যাপ বেছে নিলে, কোন অ্যাক্টিভিটি লঞ্চ করতে হবে তা এই ইনটেন্ট শনাক্ত করে।

নিচে দেওয়া কোড স্নিপেট থেকে কীভাবে আপনার মেনিফেস্টে এই ইনটেন্ট ফিল্টার যোগ করবেন তা জানতে পারবেন:

<application
  android:banner="@drawable/banner" >
  ...
  <activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

  <activity
    android:name="com.example.android.TvActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.Leanback">

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>

  </activity>
</application>

এই উদাহরণের দ্বিতীয় অ্যাক্টিভিটি ম্যানিফেস্ট এন্ট্রি থেকে বোঝা যায় যে এটি টিভি ডিভাইসে লঞ্চ করার অ্যাক্টিভিটি।

সতর্কতা: আপনি যদি নিজের অ্যাপে CATEGORY_LEANBACK_LAUNCHER ইনটেন্ট ফিল্টার অন্তর্ভুক্ত না করেন, তাহলে টিভি ডিভাইসে Google Play চালাচ্ছেন এমন ব্যবহারকারীদের কাছে এটি দৃশ্যমান হবে না। এছাড়াও, আপনি যদি কোনও টিভি ডিভাইসে লোড করার জন্য ডেভেলপার টুল ব্যবহার করেন এবং আপনার অ্যাপে এই ফিল্টার না থাকে, তাহলে অ্যাপটি টিভি ইউজার ইন্টারফেসে দেখা যাবে না।

আপনার TV অ্যাপের ইউজার ইন্টারফেস বা আগে থেকেই থাকা অ্যাপের TV অংশকে ১০ ফুট দূর থেকে রিমোট কন্ট্রোল ব্যবহার করে স্বজ্ঞাত নেভিগেশন প্রদান করতে হবে। আপনি যদি টিভিতে ব্যবহারের জন্য কোনও বিদ্যমান অ্যাপ পরিবর্তন করেন, তাহলে ফোন এবং ট্যাবলেটের জন্য ব্যবহার করা একই অ্যাক্টিভিটি লেআউট টিভিতে ব্যবহার করবেন না। টিভির জন্য অ্যাপ ডিজাইন করার নির্দেশিকা পেতে, টিভির জন্য ডিজাইন করা দেখুন।

টিভি ডিভাইসে কাজ করে বলে ঘোষণা করা

আপনার অ্যাপ যে Android TV-র জন্য তৈরি করা হয়েছে তা android.software.leanback ফিচার ঘোষণা করার মাধ্যমে জানান।

আপনার অ্যাপ মোবাইল ও টিভি, দু'জায়গাতেই চললে, required অ্যাট্রিবিউট ভ্যালু false হিসেবে সেট করুন। আপনি required অ্যাট্রিবিউট ভ্যালু true হিসেবে সেট করলে, Google Play শুধুমাত্র Android TV OS-এ আপনার অ্যাপ উপলভ্য করবে।

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="false" />
    ...
</manifest>

টাচস্ক্রিনের প্রয়োজন নেই বলে ঘোষণা করা

টিভি ডিভাইসে চালানোর জন্য তৈরি করা অ্যাপ্লিকেশন ইনপুট দেওয়ার জন্য টাচস্ক্রিনের উপর নির্ভর করে না। এটি স্পষ্ট করতে, আপনার টিভি অ্যাপের ম্যানিফেস্টকে অবশ্যই ঘোষণা করতে হবে যে android.hardware.touchscreen ফিচারের প্রয়োজন নেই। এই সেটিং আপনার অ্যাপকে টিভি ডিভাইসে কাজ করার উপযুক্ত হিসেবে শনাক্ত করে এবং Google Play-তে আপনার অ্যাপকে টিভি অ্যাপ হিসেবে বিবেচনা করার জন্য এটি প্রয়োজন। এই ম্যানিফেস্ট ঘোষণা কীভাবে অন্তর্ভুক্ত করতে হয় তা নিম্নলিখিত কোডের উদাহরণ থেকে দেখুন:

<manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>

সতর্কতা: আপনার অ্যাপ ম্যানিফেস্টে, আপনাকে অবশ্যই ঘোষণা করতে হবে যে টাচস্ক্রিনের প্রয়োজন নেই, যেমন এই উদাহরণ কোডে দেখানো হয়েছে। অন্যথায়, আপনার অ্যাপ TV ডিভাইসে Google Play-তে দেখা যাবে না।

হোম স্ক্রিন আইকন ও ব্যানার প্রদান করা

Android TV অ্যাপকে প্রতিটি লোকালাইজেশনের জন্য হোম স্ক্রিন আইকন ও ব্যানার ছবি, দু'টিই দিতে হবে। Android TV ডিভাইসের উপর নির্ভর করে, অ্যাপ লঞ্চ পয়েন্ট হিসেবে আইকন বা ব্যানার ব্যবহার করা হয় যা অ্যাপ ও গেমের সারিতে হোম স্ক্রিনে দেখা যায়।

আপনার অ্যাপে এগুলি যোগ করতে, ম্যানিফেস্টে আইকন ও ব্যানার সম্পর্কে নিম্নলিখিত বিবরণ দিন:

<application
    ...
    android:icon="@mipmap/ic_launcher"
    android:banner="@drawable/banner" >
    ...
</application>

হোম স্ক্রিন আইকন

Android TV অ্যাপকে, সব Android অ্যাপের মতো, হোম স্ক্রিন আইকন দিতে হবে। আপনার অ্যাপের জন্য একটি দুর্দান্ত লঞ্চ পয়েন্ট ডিজাইন করা এবং বিস্তারিত অ্যাসেট সংক্রান্ত প্রয়োজনীয়তা সম্পর্কে পেশাদার পদ্ধতি জানতে, Android TV অ্যাপ আইকন এবং ব্যানার নির্দেশিকা দেখুন।

সব অ্যাপ্লিকেশন অ্যাক্টিভিটির জন্য ডিফল্ট ব্যানার দিতে <application> ট্যাগের সাথে android:banner অ্যাট্রিবিউট ব্যবহার করুন অথবা নির্দিষ্ট অ্যাক্টিভিটির জন্য ব্যানার দিতে <activity> ট্যাগের সাথে ব্যবহার করুন।

ব্যানারের জন্য, ৩২০ x ১৮০ পিক্সেল সাইজের xhdpi রিসোর্স ব্যবহার করুন। ছবিতে টেক্সট থাকতে হবে। আপনার অ্যাপ একাধিক ভাষায় উপলভ্য হলে, আপনাকে অবশ্যই প্রতিটি কাজ করে এমন ভাষার জন্য টেক্সট সহ ব্যানারের আলাদা আলাদা ভার্সন প্রদান করতে হবে।

লঞ্চারের রঙ পরিবর্তন করা

সতর্কতা: Android 12 ও এর পরের যেকোনও ভার্সনে, SplashScreen প্ল্যাটফর্ম API ব্যবহার করে তৈরি কাস্টম স্প্ল্যাশ স্ক্রিন অ্যানিমেশন Android TV অ্যাপে কাজ করে না।

কোনও টিভি অ্যাপ লঞ্চ করলে, সিস্টেম একটি অ্যানিমেশন দেখায় যা একটি প্রসারিত, ভর্তি বৃত্তের মতো। এই অ্যানিমেশনের রঙ কাস্টমাইজ করতে, আপনার টিভি অ্যাপ বা অ্যাক্টিভিটির android:colorPrimary অ্যাট্রিবিউটকে একটি নির্দিষ্ট রঙে সেট করুন। এছাড়াও, থিম রিসোর্স XML ফাইল থেকে নেওয়া নিম্নলিখিত স্নিপেটে দেখানো হয়েছে যে দুটি ট্রানজিশন ওভারল্যাপ অ্যাট্রিবিউটকে true হিসেবে সেট করুন:

<resources>
    <style name="MyTheme">
      <item name="android:colorPrimary">@color/primary</item>
      <item name="android:windowAllowReturnTransitionOverlap">true</item>
      <item name="android:windowAllowEnterTransitionOverlap">true</item>
    </style>
</resources>

থিম ও স্টাইল নিয়ে কাজ করা সম্পর্কে আরও জানতে, স্টাইল ও থিম দেখুন।

Android TV OS-এর জন্য অ্যাপ তৈরি করা

Jetpack-এ TV অ্যাপের সাথে ব্যবহার করার জন্য androidx প্যাকেজ লাইব্রেরি অন্তর্ভুক্ত থাকে।

টিভির জন্য Compose

Android TV OS-এর জন্য অ্যাপ তৈরি করার সাজেস্ট করা পদ্ধতি হল Compose। কোর Compose লাইব্রেরির পাশাপাশি, Compose for TV লাইব্রেরি বিশেষভাবে বড় স্ক্রিনের জন্য ডিজাইন করা ডেডিকেটেড কম্পোনেন্ট প্রদান করে:

Android TV-তে Jetpack Compose ব্যবহার করুন লিঙ্কে গিয়ে Compose for TV ব্যবহার করে কীভাবে টিভি অ্যাপ তৈরি করতে হয় তা জানুন।

Leanback UI টুলকিট

Leanback UI টুলকিট, টিভি ডিভাইসের জন্য API ও ইউজার ইন্টারফেস উইজেট প্রদান করে:

টিভি প্লেব্যাক অ্যাপ তৈরি করুন লিঙ্কে গিয়ে Leanback UI টুলকিট ব্যবহার করে কীভাবে টিভি অ্যাপ তৈরি করবেন তা জানুন।

টিভি অ্যাপ চালানো

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

ফিজিক্যাল ডিভাইসে রান করা

নিম্নলিখিত পদ্ধতিতে আপনার টিভি ডিভাইস সেট-আপ করুন:

  1. আপনার ডেভেলপমেন্ট মেশিনের সাথে টিভি ডিভাইস কানেক্ট করতে USB কেবেল ব্যবহার করুন। প্রয়োজন হলে, আপনার ডিভাইস প্রস্তুতকারকের দেওয়া ডকুমেন্টেশন দেখুন।
  2. আপনার টিভি ডিভাইসে, সেটিংস বিকল্পে নেভিগেট করুন।
  3. ডিভাইস সারিতে, সম্পর্কে বিকল্প বেছে নিন।
  4. স্ক্রল করে বিল্ড বিকল্পে যান এবং "আপনি এখন একজন ডেভেলপার!" মেসেজটি না পাওয়া পর্যন্ত একাধিকবার বিল্ড বিকল্প বেছে নিন ।
  5. সেটিংস বিকল্পে ফিরে যান। পছন্দ সারিতে, ডেভেলপার বিকল্প বেছে নিন।
  6. ডিবাগিং > USB ডিবাগিং বিকল্প বেছে নিয়ে চালু করুন বিকল্প বেছে নিন।
  7. টিভির হোম স্ক্রিনে ফিরে যান।

আপনার টিভি ডিভাইসে অ্যাপ্লিকেশন পরীক্ষা করতে:

  1. Android Studio-তে, আপনার প্রোজেক্ট বেছে নিন এবং টুলবার থেকে রান করুন বিকল্পে ক্লিক করুন।
  2. ডেপ্লয়মেন্ট টার্গেট বেছে নিন উইন্ডোতে, আপনার টিভি ডিভাইস বেছে নিয়ে ঠিক আছে বিকল্পে ক্লিক করুন।

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

Android SDK-এর AVD ম্যানেজার ডিভাইসের সংজ্ঞা প্রদান করে যা আপনাকে অ্যাপ্লিকেশন চালানোর এবং পরীক্ষা করার জন্য ভার্চুয়াল টিভি ডিভাইস তৈরি করতে দেয়।

ভার্চুয়াল টিভি ডিভাইস তৈরি করতে:

  1. AVD Manager চালু করুন। আরও তথ্যের জন্য, ভার্চুয়াল ডিভাইস তৈরি ও ম্যানেজ করা দেখুন।
  2. AVD ম্যানেজার ডায়ালগে, ডিভাইস ডেফিনিশন ট্যাবে ক্লিক করুন।
  3. Android TV ডিভাইসের সংজ্ঞাগুলির মধ্যে একটি বেছে নিন এবং AVD তৈরি করুন বিকল্পে ক্লিক করুন।
  4. AVD তৈরি করতে এমুলেটর বিকল্প বেছে নিয়ে ঠিক আছে বিকল্পে ক্লিক করুন।

    মনে রাখবেন: TV এমুলেটর ডিভাইসের সবচেয়ে ভালো পারফর্ম্যান্সের জন্য, x86 এমুলেটর ব্যবহার করুন এবং হোস্ট GPU ব্যবহার করুন বিকল্প চালু করুন। এছাড়াও, ভার্চুয়াল ডিভাইস অ্যাক্সিলারেশন উপলভ্য থাকলে সেটি ব্যবহার করুন। ইমুলেটরের হার্ডওয়্যার অ্যাক্সিলারেশন সম্পর্কে আরও জানতে, Android ইমুলেটরের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন কনফিগার করুন দেখুন।

ভার্চুয়াল টিভি ডিভাইসে আপনার অ্যাপ্লিকেশন পরীক্ষা করতে:

  1. Android Studio-তে, আপনার প্রোজেক্ট বেছে নিন এবং টুলবার থেকে রান করুন বিকল্পে ক্লিক করুন।
  2. ডেপ্লয়মেন্ট টার্গেট বেছে নিন উইন্ডোতে, আপনার ভার্চুয়াল টিভি ডিভাইস বেছে নিয়ে ঠিক আছে বিকল্পে ক্লিক করুন।

ইমুলেটর ব্যবহার করা সম্পর্কে আরও তথ্য পেতে, Android ইমুলেটরে অ্যাপ রান করান দেখুন। Android Studio থেকে ভার্চুয়াল ডিভাইসে অ্যাপ ডেপ্লয় করা সম্পর্কে আরও জানতে, আপনার অ্যাপ ডিবাগ করুন দেখুন।

ইনস্ট্যান্ট এক্সপিরিয়েন্স হিসেবে চালানোর জন্য আপনার টিভি অ্যাপ চালু করা

ইনস্ট্যান্ট এক্সপিরিয়েন্স ব্যবহারকারীদের আপনার টিভি অ্যাপ ইনস্টল না করেই সেটি ব্যবহার করে দেখতে দেয় এবং এটি অ্যাপের ব্যবহার বাড়াতে সাহায্য করতে পারে।

Android TV ডিভাইস বা এমুলেটরে ইনস্ট্যান্ট অ্যাপ হিসেবে চালানোর জন্য আপনার TV অ্যাপ সেট-আপ করতে, প্রথমে ইনস্ট্যান্ট-এনাবল অ্যাপ বান্ডেল তৈরি করার নির্দেশাবলী অনুসরণ করুন।

এরপরে, intent-filter আপনার টিভি অ্যাপের MainActivity-এ, নিশ্চিত করুন যে AndroidManifest.xml-এ LAUNCHER এবং LEANBACK_LAUNCHER দুটিই ঘোষণা করা হয়েছে:

<activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
  </activity>

আপনার টিভি অ্যাপ এখন ইনস্ট্যান্ট এক্সপিরিয়েন্স হিসেবে চালানোর জন্য কনফিগার করা হয়েছে।

প্রকাশনার জন্য আপনার TV অ্যাপ প্রস্তুত করা

প্রকাশনা ও ডিস্ট্রিবিউশনের জন্য আপনার টিভি অ্যাপ প্রস্তুত করতে, পরবর্তী ধাপের জন্য টিভি অ্যাপ চেকলিস্ট পর্যালোচনা করুন।