ניווט באמצעות כפתורי החיצים (D-pad) ב-Android TV
בשלט הרחוק של Android TV יש כפתורי חיצים (D-pad) ששולחים פקודות שמגיעות כאירועי מקשים ב-dispatchKeyEvent(KeyEvent) של ה-Activity. צריך להעביר את המשימות האלה לPlayerView:
Kotlin
override fun dispatchKeyEvent(event: KeyEvent?): Boolean { return playerView.dispatchKeyEvent(event!!) || super.dispatchKeyEvent(event) }
Java
@Override public boolean dispatchKeyEvent(KeyEvent event) { return playerView.dispatchKeyEvent(event) || super.dispatchKeyEvent(event); }
חשוב לבקש מיקוד ל-PlayerView כדי לנווט ברכיבי ה-UI להפעלה ולדלג על מודעות. כדאי לבקש להתמקד ב-onCreate של Activity:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView.requestFocus() // ... }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView.requestFocus(); // ... }
אם אתם משתמשים ב-Compose ב-Android TV, אתם צריכים להגדיר את AndroidView כרכיב שאפשר להעביר אליו את המיקוד, ולהעביר את האירוע באמצעות הפרמטר של המשתנה ל-AndroidView בהתאם:
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )
שימוש ברכיב הקומפוזבילי Player
אם משתמשים ברכיב ה-Composable Player מהספרייה media3-ui-compose-material3, הניווט באמצעות כפתורי החיצים נתמך כברירת מחדל. הרכיבים Player ו-PlayerDefaults כוללים מופע FocusRequester אוטומטי שעובר בין הרכיבים באמצעות כפתורי החיצים (D-pad), כך שלא צריך קוד נוסף או Modifier.focusRequester כדי לטפל באירועי מקשים ובאירועי מיקוד:
PlayerDefaults מסודרים בחלק העליון, המרכזי והתחתון, כך שהניווט באמצעות כפתורי החיצים (D-pad) מרגיש אינטואיטיבי. אם אתם מתאימים אישית את המיקומים האלה או משנים אותם, חשוב לוודא שאתם מספקים רכיב שקל לנווט בו. חשוב לציין שרוב הרכיבים של Compose, כמו Slider או Row שמכילים לחצנים, מנהלים את המיקוד באופן אוטומטי.