টিভি ডিভাইসগুলির অ্যাপগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য একটি সেকেন্ডারি হার্ডওয়্যার ডিভাইস প্রয়োজন—একটি মৌলিক রিমোট কন্ট্রোলার বা গেম কন্ট্রোলার। অতএব, আপনার অ্যাপ অবশ্যই নির্দেশমূলক প্যাড (ডি-প্যাড) ইনপুট সমর্থন করবে। এছাড়াও, আপনার অ্যাপটিকে অফলাইনে যাওয়া কন্ট্রোলারগুলিকে পরিচালনা করতে হবে এবং একাধিক ধরণের কন্ট্রোলার থেকে ইনপুট করতে হবে।
এই নির্দেশিকাটি টিভি ডিভাইসের জন্য কন্ট্রোলার পরিচালনার প্রয়োজনীয়তা নিয়ে আলোচনা করে।
ডি-প্যাড ন্যূনতম নিয়ন্ত্রণ
একটি টিভি ডিভাইসের ডিফল্ট কন্ট্রোলার হল একটি ডি-প্যাড। সাধারণভাবে, আপনার অ্যাপটি অবশ্যই একটি রিমোট কন্ট্রোলার থেকে অপারেবল হতে হবে যাতে শুধুমাত্র উপরে, নিচে, বাম, ডান, নির্বাচন, পিছনে এবং হোম বোতাম থাকে। যদি আপনার অ্যাপটি এমন একটি গেম হয় যার জন্য সাধারণত অতিরিক্ত নিয়ন্ত্রণ সহ একটি গেম কন্ট্রোলারের প্রয়োজন হয় তবে শুধুমাত্র এই ডি-প্যাড নিয়ন্ত্রণগুলির সাথে গেমপ্লে সমর্থন করার চেষ্টা করুন৷ অন্যথায়, ব্যবহারকারীকে সতর্ক করুন যে একটি কন্ট্রোলার প্রয়োজন এবং তাদের ডি-প্যাড কন্ট্রোলার ব্যবহার করে সুন্দরভাবে আপনার গেম থেকে বেরিয়ে যেতে দিন।
টিভি ডিভাইসের জন্য ডি-প্যাড কন্ট্রোলারের সাথে নেভিগেশন সম্পর্কে আরও তথ্যের জন্য, টিভি নেভিগেশন দেখুন।
হ্যান্ডেল কন্ট্রোলার সংযোগ বিচ্ছিন্ন
টিভির জন্য কন্ট্রোলারগুলি প্রায়শই ব্লুটুথ ডিভাইস, যা পর্যায়ক্রমে স্লিপ মোডে গিয়ে এবং টিভি ডিভাইস থেকে সংযোগ বিচ্ছিন্ন করে শক্তি সঞ্চয় করার চেষ্টা করতে পারে। এর মানে হল যে এই পুনঃসংযোগ ইভেন্টগুলি পরিচালনা করার জন্য যদি এটি কনফিগার করা না থাকে তবে একটি অ্যাপ বাধাগ্রস্ত বা পুনরায় চালু হতে পারে। এই ঘটনাগুলি নিম্নলিখিত যে কোনও পরিস্থিতিতে ঘটতে পারে:
- কয়েক মিনিটের একটি ভিডিও চালানোর সময়, একটি ডি-প্যাড বা গেম কন্ট্রোলার স্লিপ মোডে যেতে পারে, টিভি ডিভাইস থেকে সংযোগ বিচ্ছিন্ন করতে পারে এবং পরে পুনরায় সংযোগ করতে পারে।
- গেমপ্লে চলাকালীন, একটি নতুন খেলোয়াড় একটি গেম কন্ট্রোলার ব্যবহার করে গেমটিতে যোগ দিতে পারে যা ইতিমধ্যে সংযুক্ত নেই।
- গেমপ্লে চলাকালীন, একজন খেলোয়াড় গেমটি ছেড়ে যেতে পারে এবং একটি গেম কন্ট্রোলার সংযোগ বিচ্ছিন্ন করতে পারে।
যেকোনো টিভি অ্যাপ অ্যাক্টিভিটি যেটি সংযোগ বিচ্ছিন্ন এবং পুনঃসংযোগ ইভেন্টের সাপেক্ষে অ্যাপ ম্যানিফেস্টে পুনঃসংযোগ ইভেন্টগুলি পরিচালনা করার জন্য কনফিগার করা আবশ্যক। নিম্নলিখিত কোড নমুনা প্রদর্শন করে যে কীভাবে একটি কীবোর্ড বা নেভিগেশন ডিভাইস সংযোগ, সংযোগ বিচ্ছিন্ন বা পুনরায় সংযোগ সহ কনফিগারেশন পরিবর্তনগুলি পরিচালনা করতে একটি কার্যকলাপ সক্রিয় করতে হয়:
<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>
এই কনফিগারেশন পরিবর্তনটি অ্যাপ্লিকেশানটিকে একটি পুনঃসংযোগ ইভেন্টের মাধ্যমে চলতে দেয়—অ্যান্ড্রয়েড ফ্রেমওয়ার্ক দ্বারা পুনরায় চালু হওয়ার পরিবর্তে, যা একটি ভাল ব্যবহারকারীর অভিজ্ঞতা নয়।
ডি-প্যাড ইনপুট বৈচিত্রগুলি পরিচালনা করুন
টিভি ডিভাইস ব্যবহারকারীদের একাধিক ধরনের কন্ট্রোলার থাকতে পারে যা তারা তাদের টিভির সাথে ব্যবহার করে। উদাহরণস্বরূপ, একজন ব্যবহারকারীর একটি মৌলিক ডি-প্যাড কন্ট্রোলার এবং একটি গেম কন্ট্রোলার উভয়ই থাকতে পারে। একটি গেম কন্ট্রোলার দ্বারা প্রদত্ত কী কোডগুলি যখন এটি ডি-প্যাড ফাংশনগুলির জন্য ব্যবহার করা হয় তখন একটি মৌলিক ডি-প্যাড দ্বারা প্রেরিত কী কোডগুলির থেকে আলাদা হতে পারে৷
ডি-প্যাড ইনপুটের বৈচিত্রগুলি পরিচালনা করুন যাতে ব্যবহারকারীকে আপনার অ্যাপটি পরিচালনা করতে কন্ট্রোলার স্যুইচ করতে না হয়। ইনপুট বৈচিত্র্য পরিচালনার বিষয়ে আরও তথ্যের জন্য, নির্দেশমূলক প্যাড ইনপুট প্রক্রিয়া দেখুন।
হ্যান্ডেল বোতাম ইভেন্ট
ব্যবহারকারী যখন একটি কন্ট্রোলারে একটি বোতামে ক্লিক করেন, তখন আপনার অ্যাপটি একটি 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() | রিওয়াইন্ড |
N/A | stop() | থামো |
দ্রষ্টব্য: আপনি যখন একটি MediaSession
ব্যবহার করেন, তখন মিডিয়া-নির্দিষ্ট বোতামগুলির পরিচালনাকে ওভাররাইড করবেন না, যেমন KEYCODE_MEDIA_PLAY
বা KEYCODE_MEDIA_PAUSE
। সিস্টেম স্বয়ংক্রিয়ভাবে উপযুক্ত MediaSession.Callback
পদ্ধতি ট্রিগার করে।
উপযুক্ত ব্যাক বোতাম আচরণ প্রদান করুন
পিছনের বোতামটি কখনই টগল হিসাবে কাজ করবে না। উদাহরণস্বরূপ, একটি মেনু খুলতে এবং বন্ধ করতে এটি ব্যবহার করবেন না। প্লেয়ারটি চালু থাকা পূর্ববর্তী স্ক্রীনগুলির মাধ্যমে শুধুমাত্র পিছনের দিকে, ব্রেডক্রাম্ব-স্টাইলে নেভিগেট করতে এটি ব্যবহার করুন৷
যেহেতু পিছনের বোতামটি শুধুমাত্র রৈখিক, পশ্চাৎগামী নেভিগেশন সম্পাদন করে, আপনি একটি ভিন্ন বোতাম দ্বারা খোলা একটি অ্যাপ-মধ্যস্থ মেনু ছেড়ে অ্যাপে ফিরে যেতে এটি ব্যবহার করতে পারেন। পরপর ব্যাক বোতাম টিপলে অবশ্যই সর্বদা অবশ্যই Android TV হোম স্ক্রিনে নিয়ে যাবে। যেমন: গেম প্লে > গেম পজ স্ক্রিন > গেমের প্রধান স্ক্রীন > Android TV হোম স্ক্রীন বা টিভি শো প্লে > TV অ্যাপের প্রধান স্ক্রীন > Android TV হোম স্ক্রীন।
ন্যাভিগেশনের জন্য ডিজাইন সম্পর্কে আরও তথ্যের জন্য, ডিজাইনিং ব্যাক অ্যান্ড আপ নেভিগেশন দেখুন। বাস্তবায়ন সম্পর্কে জানতে, সঠিক ব্যাক নেভিগেশন প্রদান দেখুন।
গেমের জন্য কন্ট্রোলার হ্যান্ডেল করুন
সমর্থন ডি-প্যাড নিয়ন্ত্রণ
একটি ডি-প্যাড নিয়ন্ত্রণের চারপাশে আপনার নিয়ন্ত্রণ স্কিম পরিকল্পনা করুন, যেহেতু এই নিয়ন্ত্রণ সেটটি Android TV ডিভাইসের জন্য ডিফল্ট। প্লেয়ারকে গেমের সমস্ত দিকের জন্য একটি ডি-প্যাড ব্যবহার করতে সক্ষম হতে হবে—কেবল গেমপ্লে নিয়ন্ত্রণ নয় মেনু এবং বিজ্ঞাপনগুলি নেভিগেট করাও। এই কারণে, নিশ্চিত করুন যে আপনার অ্যান্ড্রয়েড টিভি গেমটি "চালিয়ে যেতে এখানে আলতো চাপুন " এর মতো ভাষা সহ একটি স্পর্শ ইন্টারফেসের উল্লেখ না করে।
আপনি কীভাবে নিয়ামকের সাথে প্লেয়ারের মিথস্ক্রিয়াকে আকার দেন তা একটি দুর্দান্ত ব্যবহারকারীর অভিজ্ঞতা অর্জনের মূল চাবিকাঠি হতে পারে। নিম্নলিখিত সেরা অনুশীলন বিবেচনা করুন:
- কন্ট্রোলারের প্রয়োজনীয়তা সম্মুখে যোগাযোগ করুন: প্লেয়ারের সাথে কন্ট্রোলার সম্পর্কে কোনো প্রত্যাশা জানাতে আপনার Google Play বিবরণ ব্যবহার করুন। একটি গেম শুধুমাত্র একটি ডি-প্যাডের চেয়ে একটি জয়স্টিক সহ একটি গেমপ্যাডের সাথে উপযুক্ত হলে, এটি পরিষ্কার করুন৷ যে খেলোয়াড় একটি গেমের জন্য একটি অনুপযুক্ত নিয়ামক ব্যবহার করে তার অভিজ্ঞতা খারাপ হতে পারে এবং আপনার গেমটিকে একটি খারাপ রেটিং দিতে পারে।
- সামঞ্জস্যপূর্ণ বোতাম ম্যাপিং ব্যবহার করুন: স্বজ্ঞাত বোতাম ম্যাপিং একটি ভাল ব্যবহারকারীর অভিজ্ঞতার চাবিকাঠি। উদাহরণস্বরূপ, গ্রহণ করার জন্য A বোতাম এবং বাতিল করার জন্য B বোতাম ব্যবহার করে গৃহীত প্রথা মেনে চলুন। আপনি পুনরায় ব্যবহারযোগ্যতার আকারে নমনীয়তা অফার করতে পারেন। বোতাম ম্যাপিং সম্পর্কে আরও তথ্যের জন্য, নিয়ামক ক্রিয়া পরিচালনা করুন দেখুন।
- কন্ট্রোলারের ক্ষমতা সনাক্ত করুন এবং সেই অনুযায়ী সামঞ্জস্য করুন: কন্ট্রোলার এবং গেমের মধ্যে ম্যাচটি অপ্টিমাইজ করতে নিয়ামককে এর ক্ষমতা সম্পর্কে জিজ্ঞাসা করুন। উদাহরণ স্বরূপ, আপনি একজন খেলোয়াড়কে বাতাসে কন্ট্রোলার নাড়ানোর মাধ্যমে একটি বস্তুকে চালিত করার ইচ্ছা করতে পারেন, কিন্তু যদি একজন খেলোয়াড়ের কন্ট্রোলারে অ্যাক্সিলোমিটার এবং জাইরোস্কোপ হার্ডওয়্যারের অভাব থাকে, তাহলে দোলা কাজ করে না। নিয়ামককে জিজ্ঞাসা করুন এবং, যদি গতি সনাক্তকরণ সমর্থিত না হয়, একটি বিকল্প, উপলব্ধ নিয়ন্ত্রণ স্কিমে স্যুইচ করুন। কন্ট্রোলারের ক্ষমতা সম্পর্কে আরও তথ্যের জন্য, Android সংস্করণ জুড়ে সাপোর্ট কন্ট্রোলার দেখুন।
উপযুক্ত বোতাম ব্যবহার করুন
সমস্ত গেম কন্ট্রোলার স্টার্ট, সার্চ বা মেনু বোতাম প্রদান করে না। নিশ্চিত করুন যে আপনার UI এই বোতামগুলির ব্যবহারের উপর নির্ভর করে না।
একাধিক কন্ট্রোলার পরিচালনা করুন
যখন একাধিক খেলোয়াড় একটি গেম খেলছেন, প্রত্যেকে তাদের নিজস্ব নিয়ামক সহ, প্রতিটি খেলোয়াড়-নিয়ন্ত্রক জুটির মানচিত্র করা গুরুত্বপূর্ণ। কিভাবে কন্ট্রোলার-নম্বর সনাক্তকরণ বাস্তবায়ন করতে হয় সে সম্পর্কে তথ্যের জন্য, getControllerNumber()
দেখুন।
হ্যান্ডেল কন্ট্রোলার সংযোগ বিচ্ছিন্ন
যখন একটি কন্ট্রোলার গেমপ্লের মাঝখানে সংযোগ বিচ্ছিন্ন হয়, গেমটি বিরতি দিন এবং একটি ডায়ালগ দেখান যা সংযোগ বিচ্ছিন্ন খেলোয়াড়কে তাদের নিয়ামক পুনরায় সংযোগ করতে অনুরোধ করে।
এছাড়াও, ডায়ালগে সমস্যা সমাধানের টিপস অফার করুন। উদাহরণস্বরূপ, প্লেয়ারকে বলুন "আপনার ব্লুটুথ সংযোগ পরীক্ষা করুন।" ইনপুট-ডিভাইস সমর্থন বাস্তবায়ন সম্পর্কে আরও তথ্যের জন্য, নিয়ামক ক্রিয়া পরিচালনা এবং ব্লুটুথ ওভারভিউ দেখুন।
নিয়ামক নির্দেশাবলী দেখান
যদি আপনার গেমটি ভিজ্যুয়াল গেম কন্ট্রোল নির্দেশনা প্রদান করে, তাহলে ব্র্যান্ডিং মুক্ত একটি কন্ট্রোলার ইমেজ ব্যবহার করুন এবং শুধুমাত্র Android এর সাথে সামঞ্জস্যপূর্ণ বোতামগুলি অন্তর্ভুক্ত করুন৷
একটি Android-সামঞ্জস্যপূর্ণ কন্ট্রোলারের নমুনা চিত্রগুলির জন্য, Android TV গেমপ্যাড টেমপ্লেট (ZIP) ডাউনলোড করুন। এটিতে একটি কালো ব্যাকগ্রাউন্ডে একটি সাদা কন্ট্রোলার এবং একটি সাদা ব্যাকগ্রাউন্ডে একটি কালো কন্ট্রোলার রয়েছে—চিত্র 1-এ দেখানো হয়েছে—একটি PNG ফাইল এবং একটি Adobe® Illustrator® ফাইল হিসেবে।
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?authuser=4&hl=bn)
চিত্র 1. Android TV গেমপ্যাড টেমপ্লেট ব্যবহার করে নিয়ামক নির্দেশাবলীর উদাহরণ।