Navegación con el pad direccional en Android TV
El control remoto de Android TV tiene un control de pad direccional que envía comandos que llegan como eventos de tecla en dispatchKeyEvent(KeyEvent)
de tu Activity
. Estos deben delegarse a 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); }
Solicitar el enfoque para el PlayerView
es importante para navegar por los controles de reproducción y omitir anuncios. Considera solicitar el enfoque en onCreate
de 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(); // ... }
Si usas Compose en Android TV, debes hacer que el AndroidView
sea enfocado y delegar el evento pasando el parámetro de modificador a AndroidView
según corresponda:
AndroidView(
modifier = modifier
.focusable()
.onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) },
factory = { playerView }
)