টিভি ডিভাইসগুলো অ্যাপের সাথে সংযোগ স্থাপনের জন্য একটি দ্বিতীয় হার্ডওয়্যার ডিভাইসের প্রয়োজন হয়—যেমন একটি সাধারণ রিমোট কন্ট্রোলার, পয়েন্টার রিমোট বা গেম কন্ট্রোলার। ব্যবহারকারীর অভিজ্ঞতা সামঞ্জস্যপূর্ণ রাখতে, আপনার অ্যাপে অবশ্যই ডিরেকশনাল প্যাড (ডি-প্যাড) ইনপুট সাপোর্ট, কন্ট্রোলার অফলাইন হয়ে গেলে তা সামলানোর ক্ষমতা এবং পয়েন্টার রিমোটসহ একাধিক ধরনের কন্ট্রোলার থেকে ইনপুট সাপোর্ট থাকতে হবে।
ডি-প্যাড ন্যূনতম নিয়ন্ত্রণ
টিভি ডিভাইসের ডিফল্ট কন্ট্রোলার হলো একটি ডি-প্যাড। সাধারণত, আপনার অ্যাপটি এমন একটি রিমোট কন্ট্রোলার থেকে চালানো সম্ভব হতে হবে, যেটিতে শুধুমাত্র আপ, ডাউন, লেফট, রাইট, সিলেক্ট, ব্যাক এবং হোম বাটন রয়েছে। যদি আপনার অ্যাপটি এমন কোনো গেম হয় যার জন্য সাধারণত অতিরিক্ত কন্ট্রোলসহ একটি গেম কন্ট্রোলারের প্রয়োজন হয়, তবে শুধুমাত্র এই ডি-প্যাড কন্ট্রোলগুলো দিয়েই গেমপ্লে সমর্থন করার চেষ্টা করুন। অন্যথায়, ব্যবহারকারীকে সতর্ক করুন যে একটি কন্ট্রোলার প্রয়োজন এবং তাদেরকে ডি-প্যাড কন্ট্রোলার ব্যবহার করে স্বাভাবিকভাবে আপনার গেম থেকে বেরিয়ে যাওয়ার সুযোগ দিন।
টিভি ডিভাইসের ডি-প্যাড কন্ট্রোলার দিয়ে নেভিগেশন সম্পর্কে আরও তথ্যের জন্য, টিভি নেভিগেশন দেখুন।
হ্যান্ডেল কন্ট্রোলার সংযোগ বিচ্ছিন্ন করে
টিভির কন্ট্রোলারগুলো প্রায়শই ব্লুটুথ ডিভাইস হয়ে থাকে, যা শক্তি সাশ্রয়ের জন্য পর্যায়ক্রমে স্লিপ মোডে চলে যেতে পারে এবং টিভি ডিভাইস থেকে সংযোগ বিচ্ছিন্ন করতে পারে। এর মানে হলো, কোনো অ্যাপ যদি এই পুনঃসংযোগের ঘটনাগুলো সামলানোর জন্য কনফিগার করা না থাকে, তবে সেটির কার্যক্রমে বাধা আসতে পারে বা সেটি পুনরায় চালু হতে পারে। এই ঘটনাগুলো নিম্নলিখিত যেকোনো পরিস্থিতিতে ঘটতে পারে:
- কয়েক মিনিটের কোনো ভিডিও চলার সময়, একটি ডি-প্যাড বা গেম কন্ট্রোলার স্লিপ মোডে চলে যেতে পারে, টিভি ডিভাইস থেকে সংযোগ বিচ্ছিন্ন হতে পারে এবং পরে আবার সংযুক্ত হতে পারে।
- গেম খেলার সময়, কোনো নতুন খেলোয়াড় এমন একটি গেম কন্ট্রোলার ব্যবহার করে গেমে যোগ দিতে পারেন যা আগে থেকে সংযুক্ত নেই।
- গেম খেলার সময়, একজন খেলোয়াড় গেম থেকে বেরিয়ে যেতে এবং গেম কন্ট্রোলারটি সংযোগ বিচ্ছিন্ন করতে পারেন।
যেকোনো টিভি অ্যাপ অ্যাক্টিভিটি যা সংযোগ বিচ্ছিন্ন এবং পুনঃসংযোগ ইভেন্টের অধীন, সেটিকে অবশ্যই অ্যাপ ম্যানিফেস্টে পুনঃসংযোগ ইভেন্টগুলি পরিচালনা করার জন্য কনফিগার করতে হবে। নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি অ্যাক্টিভিটিকে কনফিগারেশন পরিবর্তনগুলি পরিচালনা করতে সক্ষম করা যায়, যার মধ্যে একটি কীবোর্ড বা নেভিগেশন ডিভাইসের সংযোগ, সংযোগ বিচ্ছিন্ন বা পুনঃসংযোগ অন্তর্ভুক্ত রয়েছে:
<activity
android:name="com.example.android.TvActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|navigation"
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>
এই কনফিগারেশন পরিবর্তনের ফলে অ্যাপটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক দ্বারা পুনরায় চালু না হয়ে, একটি পুনঃসংযোগ ইভেন্টের মাধ্যমে চলতে থাকে—যা ব্যবহারকারীর জন্য একটি ভালো অভিজ্ঞতা নয়।
ডি-প্যাড ইনপুটের বিভিন্নতা পরিচালনা করুন
টিভি ব্যবহারকারীদের কাছে একাধিক ধরনের কন্ট্রোলার থাকতে পারে যা তারা তাদের টিভির সাথে ব্যবহার করেন। উদাহরণস্বরূপ, একজন ব্যবহারকারীর কাছে একটি সাধারণ ডি-প্যাড কন্ট্রোলার, একটি পয়েন্টার রিমোট বা একটি গেম কন্ট্রোলার থাকতে পারে। ডি-প্যাড ফাংশনের জন্য ব্যবহৃত গেম কন্ট্রোলারের কী কোডগুলো একটি সাধারণ ডি-প্যাডের পাঠানো কী কোডগুলো থেকে ভিন্ন হতে পারে।
ডি-প্যাড ইনপুটের ভিন্নতাগুলো সামলান, যাতে আপনার অ্যাপটি চালানোর জন্য ব্যবহারকারীকে কন্ট্রোলার বদলাতে না হয়। ইনপুটের ভিন্নতা সামলানো সম্পর্কে আরও তথ্যের জন্য, ‘প্রসেস ডাইরেকশনাল প্যাড ইনপুট’ দেখুন।
পয়েন্টার রিমোট সমর্থন করুন
কিছু টিভি ডিভাইস পয়েন্টার রিমোট সমর্থন করে, যেমন এয়ার মাউস বা স্পর্শ-সংবেদনশীল ডিরেকশনাল প্যাড (ট্র্যাকপ্যাড) যুক্ত রিমোট। পয়েন্টার রিমোট সমর্থন করার ফলে ব্যবহারকারীরা পয়েন্ট-এন্ড-ক্লিক, হোভার, সোয়াইপ এবং ড্র্যাগ জেসচার ব্যবহার করে আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে পারে, যা সামঞ্জস্যপূর্ণ হার্ডওয়্যারে আরও সাবলীল অভিজ্ঞতা প্রদান করে এবং একই সাথে সম্পূর্ণ ডি-প্যাড সামঞ্জস্যতা বজায় রাখে।
ম্যানিফেস্টে পয়েন্টার রিমোট সাপোর্ট ঘোষণা করুন
আপনার অ্যাপটি পয়েন্টার এবং টাচ ইনপুট দিয়ে নেভিগেট করা যায় তা বোঝাতে, আপনার অ্যাপ ম্যানিফেস্টটি android.software.leanback.supports_touch মেটাডেটা true তে সেট করে কনফিগার করুন:
<manifest ...>
<!-- Signal whether the app is adaptive or built just for TV -->
<uses-feature
android:name="android.software.leanback"
android:required="true|false" />
<!-- Ensure the app can be installed on conventional TVs -->
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<!-- Signal whether the app supports pointer remotes -->
<meta-data
android:name="android.software.leanback.supports_touch"
android:value="true" />
<application ...>
...
</application>
</manifest>
ক্লিক, হোভার এবং স্ক্রোল ইন্টারঅ্যাকশন সমর্থন করে
পয়েন্টার রিমোট সমর্থন করার সময়, নিশ্চিত করুন যে আপনার UI কম্পোনেন্টগুলো নিম্নলিখিত ইন্টারঅ্যাকশনগুলোতে কার্সার এবং টাচ ইনপুটের প্রতি যথাযথভাবে সাড়া দেয়:
- ক্লিক এবং নির্বাচন: সমস্ত ফোকাসযোগ্য ও নির্বাচনযোগ্য UI এলিমেন্ট অবশ্যই পয়েন্টার রিমোট দিয়ে ক্লিকযোগ্য হতে হবে, যা ডি-প্যাড নির্বাচনের (
KEYCODE_DPAD_CENTER) আচরণের সাথে সামঞ্জস্যপূর্ণ হবে।- Jetpack Compose:
Modifier.clickable()অথবাpointerInputমডিফায়ার ব্যবহার করুন। আরও বিস্তারিত জানতে, Tap and press দেখুন। - ভিউ: ভিউ-এর ক্লিক ইভেন্টগুলো পরিচালনা করুন। আরও বিস্তারিত জানতে, ইনপুট ইভেন্টের সংক্ষিপ্ত বিবরণ দেখুন।
- Jetpack Compose:
- ভিজ্যুয়াল হোভার স্টেট: যখন পয়েন্টার কার্সর কোনো নির্বাচনযোগ্য আইটেমের উপর অবস্থান করে, তখন তা নির্দেশ করার জন্য একটি স্পষ্ট ভিজ্যুয়াল হোভার ইফেক্ট প্রদান করে।
- Jetpack Compose-এ:
Modifier.hoverable()ব্যবহার করুন অথবা একটিInteractionSourceব্যবহার করে হোভার স্টেট পর্যবেক্ষণ করুন। আরও বিস্তারিত জানতে, Handle user interactions দেখুন। - ভিউ:
android:state_hovered="true"ব্যবহার করে স্টেট-লিস্ট ড্রয়েবলের মাধ্যমে হোভার স্টেট নির্ধারণ করুন।
- Jetpack Compose-এ:
- সোয়াইপ এবং ফ্লিং স্ক্রলিং: টাচ-সেনসিটিভ সেন্ট্রাল ডি-প্যাড বাটনে সোয়াইপ বা ফ্লিং জেসচারের মাধ্যমে চালু হওয়া হরাইজন্টাল এবং ভার্টিকাল স্ক্রলিং অবশ্যই সমস্ত স্ক্রলযোগ্য কন্টেন্ট জুড়ে মসৃণভাবে কাজ করতে হবে।
- ড্র্যাগ স্ক্রলিং: ব্যবহারকারীদের অবশ্যই স্ক্রলযোগ্য কন্টেইনার জুড়ে উল্লম্বভাবে (উপরে এবং নিচে) বা অনুভূমিকভাবে (বাম এবং ডানে) ড্র্যাগ করে স্ক্রল করতে সক্ষম হতে হবে।
- জেটপ্যাক কম্পোজ: স্ট্যান্ডার্ড স্ক্রোলেবল কন্টেইনারগুলো ডিফল্টরূপে পয়েন্টার এবং টাচ স্ক্রোলিং সমর্থন করে। কাস্টম বাস্তবায়নের জন্য, কম্পোজ-এ পয়েন্টার ইনপুট দেখুন।
- ভিউ: স্ট্যান্ডার্ড স্ক্রোলযোগ্য ভিউগুলো ডিফল্টরূপে টাচ স্ক্রোলিং সমর্থন করে। কাস্টম ইনপুট হ্যান্ডলিং-এর জন্য, টাচ এবং ইনপুট দেখুন।
- মিডিয়া প্লেব্যাক স্ক্রাবিং: মিডিয়া প্লেব্যাকের সময় (যেমন টিভি শো এবং সিনেমা), ব্যবহারকারীদের অবশ্যই প্লেব্যাক প্রোগ্রেস বারের (সিক বার) সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হতে হবে। এর মাধ্যমে তারা পয়েন্ট ও ক্লিক করে অতীত বা ভবিষ্যতের কোনো টাইমস্ট্যাম্পে যেতে পারবেন, এবং প্রোগ্রেস বার বরাবর ড্র্যাগ (স্ক্রাব) করে একটি নির্দিষ্ট সময়ে যেতে পারবেন।
বাটন ইভেন্টগুলি পরিচালনা করুন
যখন ব্যবহারকারী কন্ট্রোলারের কোনো বাটনে ক্লিক করেন, তখন আপনার অ্যাপ একটি KeyEvent এর মাধ্যমে একটি ইভেন্ট গ্রহণ করে। বাটনটির জন্য উদ্দিষ্ট আচরণটি প্লে, পজ বা স্টপের মতো কোনো মিডিয়া ইভেন্ট হতে পারে, অথবা সিলেকশন বা নেভিগেশনের মতো কোনো টিভি-টাইপ ইভেন্টও হতে পারে। একটি ভালো ব্যবহারকারী অভিজ্ঞতা প্রদানের জন্য, কন্ট্রোলার বাটনগুলোতে সামঞ্জস্যপূর্ণ আচরণ নির্ধারণ করুন।
টিভি UI ইভেন্টগুলি
নিম্নলিখিত সারণীতে দেখানো অনুযায়ী, যে বাটনগুলো KeyEvent টাইপ তৈরি করে সেগুলোতে TV UI আচরণ নির্ধারণ করুন:
KeyEvent | আচরণ |
|---|---|
KEYCODE_BUTTON_B , KEYCODE_BACK | ফিরে যান |
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A , KEYCODE_ENTER , KEYCODE_DPAD_CENTER , KEYCODE_NUMPAD_ENTER | নির্বাচন |
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN , KEYCODE_DPAD_LEFT , KEYCODE_DPAD_RIGHT | নেভিগেশন |
মিডিয়া ইভেন্ট
যখন ব্যবহারকারী মিডিয়া দেখছেন, তখন নিচের টেবিলে দেখানো KeyEvent টাইপ তৈরি করে এমন বাটনগুলিতে আচরণ নির্ধারণ করুন। যদি আপনার অ্যাপ একটি MediaSession নিয়ন্ত্রণ করে, তাহলে টেবিলে দেখানো MediaControllerCompat.TransportControls মেথডগুলির মধ্যে একটি কল করার জন্য একটি MediaControllerAdapter ব্যবহার করুন। মনে রাখবেন যে এই প্রসঙ্গে সিলেকশন বাটনগুলি প্লে বা পজ বাটন হিসাবে কাজ করে।
KeyEvent | ট্রান্সপোর্টকন্ট্রোলস কল | আচরণ |
|---|---|---|
BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER | play() | খেলা |
BUTTON_START , BUTTON_SELECT , BUTTON_A , ENTER , DPAD_CENTER , KEYCODE_NUMPAD_ENTER | pause() | বিরতি |
BUTTON_R1 | skipToNext() | পরবর্তী ধাপে যান |
BUTTON_L1 | skipToPrevious() | পূর্ববর্তীতে যান |
DPAD_RIGHT , BUTTON_R2 , AXIS_RTRIGGER , AXIS_THROTTLE | fastForward() | দ্রুত এগিয়ে যান |
DPAD_LEFT , BUTTON_L2 , AXIS_LTRIGGER , AXIS_BRAKE | rewind() | রিওয়াইন্ড |
| প্রযোজ্য নয় | stop() | থামুন |
ব্যাক বাটনের যথাযথ আচরণ প্রদান করুন
ব্যাক বাটনটি কখনোই টগল হিসেবে কাজ করবে না। উদাহরণস্বরূপ, এটি দিয়ে একই সাথে কোনো মেনু খুলবেন না বা বন্ধ করবেন না। প্লেয়ার পূর্বে যে স্ক্রিনগুলোতে ছিল, সেগুলোর মধ্যে দিয়ে ব্রেডক্রাম্ব-এর মতো করে পেছনে যাওয়ার জন্য শুধু এটি ব্যবহার করুন।
যেহেতু ব্যাক বাটনটি শুধুমাত্র রৈখিক, অর্থাৎ পেছনের দিকে যাওয়ার সুবিধা দেয়, তাই আপনি এটি ব্যবহার করে অন্য কোনো বাটন দিয়ে খোলা অ্যাপের ভেতরের মেনু থেকে বেরিয়ে অ্যাপে ফিরে আসতে পারেন। পরপর ব্যাক বাটন চাপলে শেষ পর্যন্ত অবশ্যই অ্যান্ড্রয়েড টিভির হোম স্ক্রিনে পৌঁছাতে হবে। উদাহরণস্বরূপ: গেম প্লে > গেম পজ স্ক্রিন > গেমের মূল স্ক্রিন > অ্যান্ড্রয়েড টিভির হোম স্ক্রিন অথবা টিভি শো প্লে > টিভি অ্যাপের মূল স্ক্রিন।
অ্যান্ড্রয়েড টিভির হোম স্ক্রিন।
ন্যাভিগেশনের ডিজাইন সম্পর্কে আরও তথ্যের জন্য, ‘ডিজাইনিং ব্যাক অ্যান্ড আপ ন্যাভিগেশন’ দেখুন। বাস্তবায়ন সম্পর্কে জানতে, ‘প্রোভাইডিং প্রপার ব্যাক ন্যাভিগেশন’ দেখুন।
গেমের জন্য কন্ট্রোলারগুলো পরিচালনা করুন
অ্যান্ড্রয়েড টিভির জন্য গেম তৈরি করার সময়, আপনার কন্ট্রোল স্কিমটি এমনভাবে ডিজাইন করুন যাতে এটি সাধারণ টিভি রিমোট এবং ডেডিকেটেড গেম কন্ট্রোলার—উভয়ের সাথেই কাজ করে।
ডি-প্যাড নিয়ন্ত্রণ সমর্থন করে
আপনার কন্ট্রোল স্কিমটি ডি-প্যাড কন্ট্রোলকে কেন্দ্র করে পরিকল্পনা করুন, কারণ অ্যান্ড্রয়েড টিভি ডিভাইসগুলোর জন্য এই কন্ট্রোল সেটটিই ডিফল্ট। প্লেয়ারকে গেমের সমস্ত কাজের জন্য ডি-প্যাড ব্যবহার করতে সক্ষম হতে হবে—শুধু মূল গেমপ্লে নিয়ন্ত্রণ করার জন্যই নয়, বরং মেনু এবং বিজ্ঞাপন নেভিগেট করার জন্যও। এই কারণে, নিশ্চিত করুন যে আপনার অ্যান্ড্রয়েড টিভি গেমে "চালিয়ে যেতে এখানে ট্যাপ করুন "-এর মতো কোনো ভাষা ব্যবহার করে টাচ ইন্টারফেসের উল্লেখ না থাকে।
কন্ট্রোলারের সাথে প্লেয়ারের মিথস্ক্রিয়াকে আপনি যেভাবে রূপ দেন, তা একটি চমৎকার ইউজার এক্সপেরিয়েন্স অর্জনের চাবিকাঠি হতে পারে। নিম্নলিখিত সেরা অনুশীলনগুলো বিবেচনা করুন:
- কন্ট্রোলারের প্রয়োজনীয়তা আগে থেকেই জানিয়ে দিন: কন্ট্রোলার সম্পর্কে আপনার প্রত্যাশাগুলো খেলোয়াড়কে জানাতে আপনার গুগল প্লে বিবরণ ব্যবহার করুন। যদি কোনো গেম শুধু ডি-প্যাডযুক্ত কন্ট্রোলারের চেয়ে জয়স্টিকযুক্ত গেমপ্যাডের জন্য বেশি উপযুক্ত হয়, তবে তা স্পষ্ট করে দিন। কোনো খেলোয়াড় যদি গেমের জন্য অনুপযুক্ত কন্ট্রোলার ব্যবহার করেন, তবে তার অভিজ্ঞতা খারাপ হতে পারে এবং তিনি আপনার গেমটিকে খারাপ রেটিং দিতে পারেন।
- সামঞ্জস্যপূর্ণ বাটন ম্যাপিং ব্যবহার করুন: একটি ভালো ইউজার এক্সপেরিয়েন্সের জন্য স্বজ্ঞাত বাটন ম্যাপিং অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, কোনো কিছু গ্রহণ করার জন্য A বাটন এবং বাতিল করার জন্য B বাটন ব্যবহার করে প্রচলিত রীতি মেনে চলুন। আপনি ব্যবহারকারীকে বাটন রিম্যাপ করার সুযোগ দিয়ে নমনীয়তাও দিতে পারেন। বাটন ম্যাপিং সম্পর্কে আরও তথ্যের জন্য, ‘Handle controller actions’ দেখুন।
- কন্ট্রোলারের সক্ষমতা শনাক্ত করুন এবং সেই অনুযায়ী সমন্বয় করুন: কন্ট্রোলার এবং গেমের মধ্যে সর্বোত্তম সামঞ্জস্য আনতে কন্ট্রোলারের সক্ষমতা সম্পর্কে জিজ্ঞাসা করুন। উদাহরণস্বরূপ, আপনি হয়তো চাইবেন যে একজন খেলোয়াড় বাতাসে কন্ট্রোলার নাড়িয়ে কোনো বস্তুকে নিয়ন্ত্রণ করুক, কিন্তু যদি খেলোয়াড়ের কন্ট্রোলারে অ্যাক্সেলেরোমিটার এবং জাইরোস্কোপ হার্ডওয়্যার না থাকে, তবে নাড়ানো কাজ করবে না। কন্ট্রোলারকে জিজ্ঞাসা করুন এবং, যদি মোশন ডিটেকশন সমর্থিত না হয়, তবে একটি বিকল্প, উপলব্ধ কন্ট্রোল স্কিমে পরিবর্তন করুন। কন্ট্রোলারের সক্ষমতা জিজ্ঞাসা করার বিষয়ে আরও তথ্যের জন্য, "সাপোর্ট কন্ট্রোলারস অ্যাক্রস অ্যান্ড্রয়েড ভার্সনস" দেখুন।
উপযুক্ত বোতাম ব্যবহার করুন
সব গেম কন্ট্রোলারে স্টার্ট, সার্চ বা মেনু বাটন থাকে না। নিশ্চিত করুন যে আপনার ইউজার ইন্টারফেস (UI) এই বাটনগুলোর ব্যবহারের উপর নির্ভরশীল নয়।
একাধিক কন্ট্রোলার পরিচালনা করুন
যখন একাধিক খেলোয়াড় নিজ নিজ কন্ট্রোলার দিয়ে একটি গেম খেলে, তখন প্রতিটি খেলোয়াড়-কন্ট্রোলার জোড়াকে ম্যাপ করা গুরুত্বপূর্ণ। কন্ট্রোলার-নম্বর শনাক্তকরণ কীভাবে বাস্তবায়ন করতে হয় সে সম্পর্কে তথ্যের জন্য, getControllerNumber() দেখুন।
হ্যান্ডেল কন্ট্রোলার সংযোগ বিচ্ছিন্ন করে
গেম খেলার মাঝখানে কন্ট্রোলার সংযোগ বিচ্ছিন্ন হয়ে গেলে, গেমটি পজ করুন এবং সংযোগ বিচ্ছিন্ন হওয়া প্লেয়ারকে তার কন্ট্রোলার পুনরায় সংযোগ করতে বলার জন্য একটি ডায়ালগ বক্স দেখান।
এছাড়াও, ডায়ালগে সমস্যা সমাধানের টিপস দিন। উদাহরণস্বরূপ, প্লেয়ারকে বলুন "আপনার ব্লুটুথ সংযোগ পরীক্ষা করুন।" ইনপুট-ডিভাইস সাপোর্ট বাস্তবায়ন সম্পর্কে আরও তথ্যের জন্য, 'কন্ট্রোলার অ্যাকশন পরিচালনা' এবং 'ব্লুটুথ ওভারভিউ' দেখুন।
কন্ট্রোলার নির্দেশাবলী দেখান
আপনার গেমে যদি ভিজ্যুয়াল গেম কন্ট্রোল নির্দেশনা থাকে, তাহলে ব্র্যান্ডিং-মুক্ত কন্ট্রোলার ইমেজ ব্যবহার করুন এবং শুধুমাত্র অ্যান্ড্রয়েডের সাথে সামঞ্জস্যপূর্ণ বাটনগুলো অন্তর্ভুক্ত করুন।
অ্যান্ড্রয়েড-উপযোগী কন্ট্রোলারের নমুনা ছবির জন্য, অ্যান্ড্রয়েড টিভি গেমপ্যাড টেমপ্লেট (ZIP) ডাউনলোড করুন। এতে একটি PNG ফাইল এবং একটি Adobe® Illustrator® ফাইল হিসেবে অন্তর্ভুক্ত রয়েছে—যা চিত্র ১-এ দেখানো হয়েছে—এবং এগুলো কালো পটভূমিতে একটি সাদা কন্ট্রোলার ও সাদা পটভূমিতে একটি কালো কন্ট্রোলারের নমুনা।
