ניהול שלטים לטלוויזיות

למכשירי טלוויזיה נדרש מכשיר חומרה משני לאינטראקציה עם אפליקציות – כלי בסיסי שלט רחוק או שלט רחוק לגיימינג. לכן, האפליקציה צריכה לתמוך בקלט כיווני (D-pad). בנוסף, ייתכן שהאפליקציה שלך תצטרך לטפל בבקרים שעוברים למצב אופליין ובקלט מכמה מקורות סוג של בקר.

המדריך הזה מפרט את הדרישות לטיפול בבקרים למכשירי טלוויזיה.

פקדים מינימליים בלחצני החיצים

השלט רחוק שמוגדר כברירת מחדל למכשיר טלוויזיה הוא D-pad. באופן כללי, צריך להפעיל את האפליקציה באמצעות שלט רחוק שכולל רק את הלחצנים 'למעלה', 'למטה', 'שמאלה', 'ימינה', 'בחירה', 'הקודם' ו'דף הבית'. אם האפליקציה הוא משחק שבדרך כלל דורש בקר משחקים עם פקדים נוספים, מנסים לתמוך בגיימפליי רק באמצעות הפקדים האלה בלחצני החיצים. אחרת, עליך להזהיר את המשתמש נדרש שלט רחוק, ומאפשרים להם לצאת מהמשחק בצורה חלקה באמצעות השלט רחוק של לחצני החיצים (D-pad).

למידע נוסף על ניווט עם בקרי D-pad למכשירי טלוויזיה: ניווט בטלוויזיה.

ידית המכשיר מתנתקת

בקרים לטלוויזיה הם לעיתים קרובות מכשירי Bluetooth, שעשויים לנסות לחסוך בסוללה מדי פעם כניסה למצב שינה ומתנתקת ממכשיר הטלוויזיה. המשמעות היא שאפליקציה מסוימת אם הוא לא מוגדר לטפל באירועי ההתחברות מחדש, או שהוא יופעל מחדש. האירועים האלה יכול לקרות בכל אחת מהנסיבות הבאות:

  • בזמן שסרטון שנמשך כמה דקות, לחצני החיצים (D-pad) או משחק יכול להיות שהבקר יעבור למצב שינה, יתנתק ממכשיר הטלוויזיה ולהתחבר מחדש מאוחר יותר.
  • במהלך המשחק, שחקן חדש עשוי להצטרף למשחק באמצעות בקר משחקים עדיין לא מחובר.
  • במהלך המשחק, השחקן עשוי לצאת מהמשחק ולנתק את בקר המשחק.

צריך להגדיר כל פעילות של אפליקציות טלוויזיה שכפופת לניתוק ולחיבור מחדש של אירועים תטפל באירועי חיבור מחדש בקובץ המניפסט של האפליקציה. דוגמת הקוד הבאה ממחישה איך הפעלת פעילות כדי לטפל בשינויים בהגדרות, כולל מקלדת או מכשיר ניווט התחברות, התנתקות או התחברות מחדש:

<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, לספק חוויית משתמש טובה.

ידית בווריאציות של קלט בלחצני החיצים

יכול להיות שלמשתמשים במכשירי טלוויזיה יש יותר מסוג אחד של בקר שבו הם משתמשים עם הטלוויזיה. עבור לדוגמה, יכול להיות שלמשתמש יש גם בקר D-pad בסיסי וגם בקר משחקים. קודי המפתחות מסופק על ידי בקר משחקים כאשר הוא משמש לפונקציות של לחצני החיצים (D-pad) עשוי להיות שונה מהמקש קודים שנשלחים על ידי לחצני החיצים (D-pad) בסיסיים.

צריך לטפל בווריאציות בקלט D-pad כך שהמשתמש לא צריכים להחליף בקרים כדי לתפעל את האפליקציה. מידע נוסף על טיפול של וריאציות הקלט, ראו עיבוד קלט לחצנים כיווניים.

אירועים של הלחצן 'כינוי'

כשהמשתמש לוחץ על לחצן בשלט רחוק, האפליקציה מקבלת אירוע עם 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 להשתמש ב-MediaControllerAdapter כדי להתקשר לאחד מMediaControllerCompat.TransportControls השיטות שמוצגות בטבלה. שימו לב שלחצני הבחירה פועלים כ'הפעלה' או 'השהיה' בהקשר הזה.

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_R1skipToNext()אפשר לדלג אל הבא
BUTTON_L1skipToPrevious()אפשר לדלג אל הקודם
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER AXIS_THROTTLEfastForward()הרצה קדימה
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER AXIS_BRAKErewind()הרצה אחורה
לא רלוונטיstop()עצירה

הערה: כשמשתמשים ב-MediaSession, אין לבטל את הטיפול ספציפיים למדיה, כמו KEYCODE_MEDIA_PLAY או KEYCODE_MEDIA_PAUSE. המערכת מפעילה באופן אוטומטי את MediaSession.Callback .

מספקים התנהגות הולמת של לחצן 'הקודם'

אסור שלחצן 'הקודם' יפעל כלחצן החלפת מצב. לדוגמה, אל תשתמשו בו גם כדי לפתוח וגם לסגור תפריט יש להשתמש בו רק כדי לנווט אחורה, בסגנון של נתיב ניווט, בין המסכים הקודמים שהנגן עד היום.

מאחר שלחצן 'הקודם' מבצע רק ניווט ליניארי אחורה, אפשר להשתמש כדי להשאיר תפריט בתוך האפליקציה שנפתח על ידי לחצן אחר ולחזור לאפליקציה. לחיצה רציפה על לחצן 'הקודם' חייבת להוביל תמיד למסך הבית של Android TV. לדוגמה: מהלך המשחק > מסך השהיית המשחק > המסך הראשי של המשחק > במסך הבית של Android TV או הפעלת תוכנית טלוויזיה > המסך הראשי של אפליקציית הטלוויזיה > מסך הבית של Android TV.

למידע נוסף על עיצוב הניווט, ראו עיצוב הניווט אחורה ולמעלה. מידע נוסף על ההטמעה זמין במאמר איך לספק ניווט תקין אחורה.

טיפול בבקרים במשחקים

לחצני תמיכה בלחצני החיצים

תכננו את סכמת הבקרה סביב לחצני החיצים (D-pad), כי קבוצת הבקרה הזו ברירת המחדל למכשירי Android TV. לנגן צריכה להיות אפשרות להשתמש בלחצני החיצים (D-pad) לכל ההיבטים של במשחק - לא רק שליטה על הגיימפליי העיקרי אלא גם ניווט בתפריטים ובמודעות. לכן, ודאו שהמשחק שלכם ל-Android TV לא מתייחס לממשק מגע עם שפה כמו "יש להקיש כאן כדי להמשיך."

הדרך שבה אתם מעצבים את האינטראקציה של השחקן עם השלט רחוק יכולה להיות המפתח להצלחה של חוויה אישית. כדאי ליישם את השיטות המומלצות הבאות:

  • להעביר מראש את הדרישות לנאמני מידע: צריך להשתמש בתיאור של Google Play כדי להסביר לשחקן ציפיות לגבי בקרים. אם משחק מתאים יותר בקר משחקים עם ג'ויסטיק, ולא בג'ויסטיק, ובו לחצני החיצים (D-pad) בלבד. שחקן שמשתמש לבקר שלא מתאים למשחק עלול להיות חוויה גרועה ולתת משחק עם דירוג גרוע.
  • שימוש במיפוי לחצנים עקבי: מיפוי לחצנים אינטואיטיבי הוא המפתח לחוויית משתמש טובה. לדוגמה, כדי לפעול בהתאם לתנאי המכס המקובלים, אפשר להשתמש בלחצן 'A' כדי לאשר ואת הלחצן B כדי לבטל. אפשר גם להציע אפשרויות גמישות בפורמט של התאמה מחדש. מידע נוסף על מיפוי לחצנים זמין בקטע כינוי פעולות של בקר משחקים.
  • זיהוי יכולות הבקר וביצוע שינויים בהתאם: שליחת שאילתה על הבקר על היכולות שלו לבצע אופטימיזציה להתאמה בין השלט רחוק למשחק. לדוגמה, למשל, אם שחקן מניף את השלט רחוק באוויר כדי לשלוט בחפץ. אבל אם בבקר של הנגן אין מד תאוצה וחומרה של ג'ירוסקופ, ולכן נפנוף לא עובד. שולחים שאילתה לבקר, ואם זיהוי התנועה לא פועל נתמך, מעבר לסכמת בקרה חלופית וזמינה. אפשר לקבל מידע נוסף בנושא שליחת שאילתות לגבי יכולות הבקר, ראו תמיכה בקרים בכל גרסאות Android.

שימוש בלחצנים מתאימים

לא כל בקרי המשחקים מספקים את הלחצנים 'התחלה', 'חיפוש' או 'תפריט'. ודאו שממשק המשתמש שלכם לא תלוי לשימוש בלחצנים האלה.

טיפול במספר בקרים

כשמספר שחקנים משחקים במשחק, ולכל אחד מהם יש בקר נפרד, חשוב למפות כל צמד של בקר שחקן-בקר. למידע על אופן ההטמעה של מספר בקר זיהוי, ראה getControllerNumber()

ידית המכשיר מתנתקת

כשמתנתקים מהבקר באמצע הגיימפליי, צריך להשהות את המשחק ולהציג תיבת דו-שיח עם הנחיה לשחקן שנותק להתחבר מחדש לבקר שלו.

בנוסף, הציעו טיפים לפתרון בעיות בתיבת הדו-שיח. לדוגמה, ציינו את כדי לבדוק את החיבור ל-Bluetooth. למידע נוסף על הטמעת מכשיר קלט תמיכה, ראו בקר ניהול כינויים actions סקירה כללית של Bluetooth.

הצגת ההוראות לשלט רחוק

אם המשחק שלכם מספק הוראות חזותיות לפקדים במשחק, עליכם להשתמש התמונה של השלט רחוק ללא מיתוג וכוללת רק לחצנים שתואמים ל-Android.

כדי לראות תמונות לדוגמה של שלט רחוק שתואם ל-Android, צריך להוריד את תבנית בקר משחקים ל-Android TV (ZIP). היא כוללת בקר לבן על רקע שחור ובקר שחור על גבי לבן רקע — מוצג בצורה 1 — כקובץ PNG וכקובץ Adobe® Illustrator®.

איור 1. דוגמה להוראות לנאמני מידע באמצעות תבנית לגיימפאד של Android TV.