टीवी डिवाइसों को ऐप्लिकेशन के साथ इंटरैक्ट करने के लिए, दूसरे हार्डवेयर डिवाइस की ज़रूरत होती है. जैसे, सामान्य रिमोट कंट्रोलर या गेम कंट्रोलर. इसलिए, आपके ऐप्लिकेशन में डायरेक्शनल पैड (डी-पैड) इनपुट की सुविधा होनी चाहिए. इसके अलावा, आपके ऐप्लिकेशन को ऑफ़लाइन होने वाले कंट्रोलर और एक से ज़्यादा तरह के कंट्रोलर से मिलने वाले इनपुट को मैनेज करना पड़ सकता है.
इस गाइड में, टीवी डिवाइसों के लिए कंट्रोलर को मैनेज करने की ज़रूरी शर्तों के बारे में बताया गया है.
डी-पैड के लिए ज़रूरी कंट्रोल
टीवी डिवाइस के लिए डिफ़ॉल्ट कंट्रोलर, डी-पैड होता है. आम तौर पर, आपका ऐप्लिकेशन ऐसे रिमोट कंट्रोलर से चलाया जा सकता है जिसमें सिर्फ़ ऊपर, नीचे, बाएं, दाएं, चुनें, वापस जाएं, और होम बटन हों. अगर आपका ऐप्लिकेशन कोई ऐसा गेम है जिसके लिए आम तौर पर, अतिरिक्त कंट्रोल वाला गेम कंट्रोलर ज़रूरी होता है, तो सिर्फ़ इन डी-पैड कंट्रोल की मदद से गेमप्ले की सुविधा देने की कोशिश करें. अगर ऐसा नहीं किया जा सकता, तो उपयोगकर्ता को चेतावनी दें कि कंट्रोलर की ज़रूरत है. साथ ही, डी-पैड कंट्रोलर का इस्तेमाल करके, उन्हें गेम से बाहर निकलने की सुविधा दें.
टीवी डिवाइसों के लिए, डी-पैड कंट्रोलर की मदद से नेविगेट करने के बारे में ज़्यादा जानने के लिए, टीवी पर नेविगेट करना लेख पढ़ें.
कंट्रोलर के डिसकनेक्ट होने की समस्या को मैनेज करना
टीवी के लिए इस्तेमाल किए जाने वाले कंट्रोलर, अक्सर ब्लूटूथ डिवाइस होते हैं. ये समय-समय पर स्लीप मोड में जाकर और टीवी डिवाइस से डिसकनेक्ट होकर, बैटरी बचाने की कोशिश कर सकते हैं. इसका मतलब है कि अगर किसी ऐप्लिकेशन को इन रीकनेक्ट इवेंट को मैनेज करने के लिए कॉन्फ़िगर नहीं किया गया है, तो वह रुक सकता है या रीस्टार्ट हो सकता है. ये इवेंट इनमें से किसी भी स्थिति में हो सकते हैं:
- कई मिनट तक चलने वाले वीडियो के दौरान, डी-पैड या गेम कंट्रोलर स्लीप मोड में जा सकता है. साथ ही, टीवी डिवाइस से डिसकनेक्ट हो सकता है और बाद में फिर से कनेक्ट हो सकता है.
- गेमप्ले के दौरान, कोई नया खिलाड़ी ऐसे गेम कंट्रोलर का इस्तेमाल करके गेम में शामिल हो सकता है जो पहले से कनेक्ट नहीं है.
- गेमप्ले के दौरान, कोई खिलाड़ी गेम से बाहर जा सकता है और गेम कंट्रोलर को डिसकनेक्ट कर सकता है.
टीवी के किसी भी ऐसे ऐप्लिकेशन की गतिविधि जिसे डिसकनेक्ट और रीकनेक्ट इवेंट के लिए कॉन्फ़िगर किया गया है, उसे ऐप्लिकेशन मेनिफ़ेस्ट में रीकनेक्शन इवेंट को मैनेज करने के लिए कॉन्फ़िगर किया जाना चाहिए. यहां दिए गए कोड सैंपल में, किसी ऐक्टिविटी को कॉन्फ़िगरेशन में होने वाले बदलावों को मैनेज करने का तरीका बताया गया है. इसमें कीबोर्ड या नेविगेशन डिवाइस के कनेक्ट, डिसकनेक्ट या रीकनेक्ट होने की जानकारी शामिल है:
<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 फ़्रेमवर्क की मदद से इसे रीस्टार्ट नहीं किया जाता. इससे उपयोगकर्ता को बेहतर अनुभव मिलता है.
डी-पैड इनपुट में होने वाले बदलावों को मैनेज करना
टीवी डिवाइस के उपयोगकर्ताओं के पास एक से ज़्यादा तरह के कंट्रोलर हो सकते हैं, जिनका इस्तेमाल वे अपने टीवी के साथ करते हैं. उदाहरण के लिए, किसी उपयोगकर्ता के पास सामान्य डी-पैड कंट्रोलर और गेम कंट्रोलर, दोनों हो सकते हैं. डी-पैड के फ़ंक्शन के लिए इस्तेमाल किए जाने पर, गेम कंट्रोलर से मिलने वाले की कोड , सामान्य डी-पैड से भेजे गए की कोड से अलग हो सकते हैं.
डी-पैड इनपुट में होने वाले बदलावों को मैनेज करें, ताकि उपयोगकर्ता को आपका ऐप्लिकेशन चलाने के लिए कंट्रोलर न बदलना पड़े. इनपुट में होने वाले बदलावों को मैनेज करने के बारे में ज़्यादा जानने के लिए, डायरेक्शनल पैड इनपुट प्रोसेस करना लेख पढ़ें.
बटन के इवेंट मैनेज करना
जब कोई उपयोगकर्ता किसी कंट्रोलर पर मौजूद बटन पर क्लिक करता है, तो आपके ऐप्लिकेशन को KeyEvent के साथ एक इवेंट मिलता है. बटन का मकसद, मीडिया इवेंट हो सकता है. जैसे, चलाना, रोकना या बंद करना. इसके अलावा, यह टीवी से जुड़ा इवेंट भी हो सकता है. जैसे, चुनना या नेविगेट करना. उपयोगकर्ता को बेहतर अनुभव देने के लिए, कंट्रोलर के बटन के लिए एक जैसा व्यवहार असाइन करें.
टीवी यूज़र इंटरफ़ेस (यूआई) इवेंट
नीचे दी गई टेबल में दिखाए गए KeyEvent टाइप जनरेट करने वाले बटन को, टीवी यूज़र इंटरफ़ेस (यूआई) का व्यवहार असाइन करें:
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 | TransportControls कॉल | व्यवहार |
|---|---|---|
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() | रोकें |
ध्यान दें: जब आप MediaSession का इस्तेमाल करते हैं, तो मीडिया से जुड़े बटन (जैसे, KEYCODE_MEDIA_PLAY या KEYCODE_MEDIA_PAUSE) को मैनेज करने की सुविधा को ओवरराइड न करें.
सिस्टम, अपने-आप सही
MediaSession.Callback
तरीका ट्रिगर करता है.
'वापस जाएं' बटन के लिए सही व्यवहार तय करना
'वापस जाएं' बटन, टॉगल के तौर पर काम नहीं करना चाहिए. उदाहरण के लिए, इसका इस्तेमाल मेन्यू खोलने और बंद करने, दोनों के लिए न करें. इसका इस्तेमाल सिर्फ़ पीछे की ओर नेविगेट करने के लिए करें. जैसे, खिलाड़ी ने जिन पिछली स्क्रीन को देखा है उन पर जाने के लिए, ब्रेडक्रंब स्टाइल में नेविगेट करना.
'वापस जाएं' बटन से सिर्फ़ पीछे की ओर नेविगेट किया जा सकता है. इसलिए, इसका इस्तेमाल किसी दूसरे बटन से खुले इन-ऐप्लिकेशन मेन्यू से बाहर निकलने और ऐप्लिकेशन पर वापस जाने के लिए किया जा सकता है. 'वापस जाएं' बटन को लगातार दबाने पर, हमेशा Android TV की होम स्क्रीन पर पहुंचना चाहिए. उदाहरण के लिए: गेमप्ले > गेम को रोकने वाली स्क्रीन > गेम की मुख्य स्क्रीन > Android TV की होम स्क्रीन या टीवी शो चलाना > टीवी ऐप्लिकेशन की मुख्य स्क्रीन > Android TV की होम स्क्रीन.
नेविगेशन के लिए डिज़ाइन के बारे में ज़्यादा जानने के लिए, 'वापस जाएं' और 'ऊपर जाएं' बटन के लिए नेविगेशन डिज़ाइन करना लेख पढ़ें. इसे लागू करने के बारे में जानने के लिए, 'वापस जाएं' बटन के लिए सही नेविगेशन की सुविधा देना लेख पढ़ें.
गेम के लिए कंट्रोलर मैनेज करना
डी-पैड कंट्रोल की सुविधा देना
अपने कंट्रोल स्कीम की योजना डी-पैड कंट्रोल के हिसाब से बनाएं, क्योंकि Android TV डिवाइसों के लिए यह कंट्रोल सेट डिफ़ॉल्ट होता है. खिलाड़ी को गेम के सभी पहलुओं के लिए डी-पैड का इस्तेमाल करना चाहिए. जैसे, सिर्फ़ मुख्य गेमप्ले को कंट्रोल करना ही नहीं, बल्कि मेन्यू और विज्ञापनों को नेविगेट करना भी. इसलिए, पक्का करें कि आपके Android TV गेम में, टच इंटरफ़ेस का इस्तेमाल न किया जाए. जैसे, "जारी रखने के लिए यहांटैप करें."
कंट्रोलर के साथ खिलाड़ी का इंटरैक्शन, उपयोगकर्ता को बेहतर अनुभव देने में अहम भूमिका निभा सकता है. इन सबसे सही तरीकों को अपनाने के बारे में सोचें:
- कंट्रोलर की ज़रूरी शर्तों के बारे में पहले से बताना: Google Play पर दिए गए अपने ब्यौरे का इस्तेमाल करके, खिलाड़ी को कंट्रोलर के बारे में अपनी उम्मीदों के बारे में बताएं. अगर कोई गेम, सिर्फ़ डी-पैड वाले गेमपैड के मुकाबले जॉयस्टिक वाले गेमपैड के साथ बेहतर तरीके से खेला जा सकता है, तो इस बारे में साफ़ तौर पर बताएं. अगर कोई खिलाड़ी, किसी गेम के लिए सही कंट्रोलर का इस्तेमाल नहीं करता है, तो उसे खराब अनुभव मिल सकता है और वह आपके गेम को खराब रेटिंग दे सकता है.
- बटन मैपिंग का एक जैसा इस्तेमाल करना: बटन मैपिंग को आसान बनाना, उपयोगकर्ता को बेहतर अनुभव देने के लिए ज़रूरी है. उदाहरण के लिए, A बटन का इस्तेमाल स्वीकार करने और B बटन का इस्तेमाल रद्द करने के लिए करें. आपके पास बटन को फिर से मैप करने की सुविधा देने का विकल्प भी है. बटन मैपिंग के बारे में ज़्यादा जानने के लिए, कंट्रोलर की कार्रवाइयों को मैनेज करना लेख पढ़ें.
- कंट्रोलर की क्षमताओं का पता लगाना और उसके हिसाब से बदलाव करना: कंट्रोलर और गेम के बीच बेहतर तालमेल बनाने के लिए, कंट्रोलर की क्षमताओं के बारे में क्वेरी करें. उदाहरण के लिए, हो सकता है कि आप किसी खिलाड़ी से कंट्रोलर को हवा में घुमाकर किसी ऑब्जेक्ट को चलाने की उम्मीद करें. हालांकि, अगर किसी खिलाड़ी के कंट्रोलर में ऐक्सेलरोमीटर और जाइरोस्कोप हार्डवेयर नहीं है, तो घुमाने से कोई फ़र्क़ नहीं पड़ेगा. कंट्रोलर के बारे में क्वेरी करें. अगर हलचल का पता लगाने वाली सुविधा उपलब्ध नहीं है , तो कंट्रोल स्कीम के किसी दूसरे विकल्प पर स्विच करें. कंट्रोलर की क्षमताओं के बारे में क्वेरी करने के बारे में ज़्यादा जानने के लिए, Android के सभी वर्शन पर कंट्रोलर की सुविधा देना लेख पढ़ें.
सही बटन का इस्तेमाल करना
सभी गेम कंट्रोलर में, स्टार्ट, खोजें या मेन्यू बटन नहीं होते हैं. पक्का करें कि आपका यूज़र इंटरफ़ेस (यूआई), इन बटन के इस्तेमाल पर निर्भर न हो.
एक से ज़्यादा कंट्रोलर मैनेज करना
जब एक से ज़्यादा खिलाड़ी, अपने-अपने कंट्रोलर से कोई गेम खेल रहे हों, तो हर खिलाड़ी-कंट्रोलर के पेयर को
मैप करना ज़रूरी है. कंट्रोलर-नंबर
की पहचान को लागू करने के तरीके के बारे में जानने के लिए,
getControllerNumber() लेख पढ़ें.
कंट्रोलर के डिसकनेक्ट होने की समस्या को मैनेज करना
गेमप्ले के दौरान, अगर कोई कंट्रोलर डिसकनेक्ट हो जाता है, तो गेम को रोकें और एक डायलॉग दिखाएं. इसमें डिसकनेक्ट हुए खिलाड़ी को अपना कंट्रोलर फिर से कनेक्ट करने के लिए कहा जाए.
इसके अलावा, डायलॉग में समस्या हल करने के लिए सलाह दें. उदाहरण के लिए, खिलाड़ी से "अपना ब्लूटूथ कनेक्शन देखें" कहें. इनपुट-डिवाइस की सुविधा को लागू करने के बारे में ज़्यादा जानने के लिए, कंट्रोलर की कार्रवाइयों को मैनेज करना और ब्लूटूथ की खास जानकारी लेख पढ़ें.
कंट्रोलर के निर्देश दिखाना
अगर आपके गेम में, गेम कंट्रोल के निर्देश विज़ुअल फ़ॉर्मैट में दिए जाते हैं, तो a ब्रैंडिंग के बिना कंट्रोलर की इमेज का इस्तेमाल करें. साथ ही, इसमें सिर्फ़ Android के साथ काम करने वाले बटन शामिल करें.
Android के साथ काम करने वाले कंट्रोलर की सैंपल इमेज पाने के लिए, Android TV Gamepad Template (ZIP) डाउनलोड करें. इसमें काले बैकग्राउंड पर सफ़ेद कंट्रोलर और सफ़ेद बैकग्राउंड पर काला कंट्रोलर शामिल है. इन्हें पहली इमेज में दिखाया गया है. यह पीएनजी फ़ाइल और Adobe® Illustrator® फ़ाइल के तौर पर उपलब्ध है.