מכשירי טלוויזיה דורשים מכשיר חומרה משני כדי ליצור אינטראקציה עם אפליקציות – שלט רחוק בסיסי או בקר משחקים. לכן, האפליקציה שלכם צריכה לתמוך בהזנה באמצעות לחצני החיצים (D-pad). בנוסף, יכול להיות שהאפליקציה שלכם תצטרך לטפל במצבים שבהם בקרים עוברים למצב אופליין, ובקלט מכמה סוגים של בקרים.
מדריך זה דן בדרישות לטיפול בבקרים עבור מכשירי טלוויזיה.
אמצעי בקרה מינימליים של לחצני החיצים (D-pad)
בקר ברירת המחדל למכשיר טלוויזיה הוא כפתורי החיצים (D-pad). באופן כללי, האפליקציה צריכה להיות ניתנת להפעלה באמצעות שלט רחוק שיש בו רק כפתורים של מעלה, מטה, ימינה, שמאלה, בחירה, חזרה ודף הבית. אם האפליקציה שלכם היא משחק שבדרך כלל דורש בקר משחק עם פקדים נוספים, נסו לתמוך במשחקיות עם פקדים אלה של ה-D-pad. אחרת, הזהירו את המשתמש שנדרש בקר ותנו לו לצאת מהמשחק בצורה חלקה באמצעות בקר ה-D-pad.
למידע נוסף על ניווט באמצעות בקרי D-pad עבור מכשירי טלוויזיה, ראו ניווט בטלוויזיה.
טיפול בניתוח של ניתוקים של בקרים
בקרי טלוויזיה הם לרוב התקני בלוטות', שעשויים לנסות לחסוך בחשמל על ידי מעבר מעת לעת למצב שינה וניתוק ממכשיר הטלוויזיה. המשמעות היא שאפליקציה עשויה להיות מופרעת או מופעלת מחדש אם היא לא מוגדרת לטפל באירועי ההתחברות מחדש האלה. האירועים האלה יכולים לקרות בכל אחת מהנסיבות הבאות:
- בזמן שסרטון שאורכו מספר דקות מופעל, מכשיר 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) כדי שהמשתמש לא יצטרך להחליף בקרים כדי להפעיל את האפליקציה שלכם. למידע נוסף על טיפול בשינויים בקלט, ראו עיבוד קלט של משטח כיווני.
טיפול באירועים של לחצנים
כשהמשתמש לוחץ על לחצן בשלט רחוק, האפליקציה מקבלת אירוע עם 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_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.
מידע נוסף על עיצוב לניווט זמין במאמר עיצוב ניווט באמצעות הלחצנים 'הקודם' ו'למעלה'. מידע על הטמעה זמין במאמר הוספת ניווט לאחור תקין.
טיפול בבקרים למשחקים
תמיכה בשליטה באמצעות כפתורי החיצים (D-pad)
כדאי לתכנן את מערכת הבקרה סביב כפתורי החיצים, כי הם ברירת המחדל במכשירי Android TV. השחקן צריך להיות מסוגל להשתמש בכפתורי החיצים (D-pad) בכל ההיבטים של המשחק – לא רק כדי לשלוט במשחק עצמו, אלא גם כדי לנווט בתפריטים ובמודעות. לכן, חשוב לוודא שבמשחק ל-Android TV לא מוזכר ממשק מגע עם שפה כמו הקשה כאן כדי להמשיך.
האופן שבו אתם מעצבים את האינטראקציה של השחקן עם בקר המשחק יכול להיות המפתח להשגת חוויית משתמש מעולה. כדאי ליישם את השיטות המומלצות הבאות:
- יש לציין מראש את דרישות הבקר: השתמשו בתיאור של Google Play כדי להעביר לשחקן ציפיות לגבי בקרים. אם משחק מתאים יותר לגיימפד עם ג'ויסטיק מאשר למשחק עם D-pad בלבד, יש להבהיר זאת. שחקן שמשתמש בשלט לא מתאים למשחק עלול ליהנות מחוויה גרועה ולתת למשחק שלכם דירוג נמוך.
- משתמשים במיפוי עקבי של לחצנים: מיפוי אינטואיטיבי של לחצנים הוא המפתח לחוויית משתמש טובה. לדוגמה, צריך לפעול בהתאם למוסכמות המקובלות וללחוץ על לחצן A כדי לאשר ועל לחצן B כדי לבטל. אפשר גם להציע גמישות בצורה של מיפוי מחדש. מידע נוסף על מיפוי לחצנים זמין במאמר טיפול בפעולות של בקרים.
- זיהוי היכולות של השלט והתאמה בהתאם: שאילתה לגבי היכולות של השלט כדי לבצע אופטימיזציה של ההתאמה בין השלט למשחק. לדוגמה, ייתכן שאתם מתכוונים ששחקן ינוהל חפץ על ידי נפנוף הבקר באוויר, אך אם לבקר של שחקן חסר חומרת מד תאוצה וג'ירוסקופ, נפנוף לא יעבוד. בצע שאילתה לבקר, ואם זיהוי תנועה אינו נתמך, עבור לתכנית בקרה חלופית וזמינה. מידע נוסף על שאילתות לגבי יכולות הבקר זמין במאמר תמיכה בבקרי משחקים בגרסאות שונות של Android.
שימוש בלחצנים המתאימים
לא כל בקרי המשחק מספקים לחצני התחל, חיפוש או תפריט. חשוב לוודא שממשק המשתמש לא תלוי בשימוש בלחצנים האלה.
טיפול בכמה שלטי משחק
כשכמה שחקנים משחקים במשחק, כל אחד עם שלט משחק משלו, חשוב למפות כל שחקן עם השלט שלו. למידע על אופן יישום זיהוי מספר בקר, ראה
getControllerNumber().
טיפול בניתוח של ניתוקים של בקרים
אם השלט מתנתק באמצע המשחק, צריך להשהות את המשחק ולהציג תיבת דו-שיח שבה מוצגת בקשה לשחקן המנותק לחבר מחדש את השלט.
כמו כן, הציעו טיפים לפתרון בעיות בדיאלוג. לדוגמה, אמור לנגן "בדוק את חיבור ה-Bluetooth שלך". מידע נוסף על הטמעה של תמיכה במכשירי קלט זמין במאמרים טיפול בפעולות של בקרים וסקירה כללית על Bluetooth.
הצגת הוראות לשימוש בבקר
אם המשחק שלכם מספק הוראות ויזואליות לשליטה במשחק, השתמשו בתמונת בקר ללא מיתוג וכללו רק כפתורים התואמים לאנדרואיד.
לקבלת תמונות לדוגמה של בקר תואם לאנדרואיד, הורידו את תבנית משחק ה-Gamepad של Android TV (ZIP). הוא כולל שלט לבן על רקע שחור ושלט שחור על רקע לבן – כמו שמוצג באיור 1 – כקובץ PNG וכקובץ Adobe® Illustrator®.