Android TV

在 Android TV 上使用 D-Pad 導覽

Android TV 遙控器具有 D-pad 控制項,可傳送指令,這些指令會以按鍵事件的形式傳送至 ActivitydispatchKeyEvent(KeyEvent)。請將這些項目委派給「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 的焦點對於瀏覽播放控制項和略過廣告非常重要。請考慮在 ActivityonCreate 中要求焦點:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView.requestFocus()
  // ...
}

Java

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    playerView.requestFocus();
    // ...
}

如果您在 Android TV 上使用 Compose,則必須將 AndroidView 設為可聚焦,並將修飾符參數傳遞至 AndroidView,據此委派事件:

AndroidView(
  modifier = modifier
    .focusable()
    .onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) },
  factory = { playerView }
)