Android TV

ناوبری با D-pad در اندروید تی‌وی

کنترل از راه دور تلویزیون اندروید دارای یک کنترل D-pad است که دستوراتی را که به عنوان رویدادهای کلیدی در dispatchKeyEvent(KeyEvent) از Activity شما می‌رسند، ارسال می‌کند. این موارد باید به PlayerView واگذار شوند:

کاتلین

override fun dispatchKeyEvent(event: KeyEvent?): Boolean{
  return playerView.dispatchKeyEvent(event!!) || super.dispatchKeyEvent(event)
}

جاوا

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
  return playerView.dispatchKeyEvent(event) || super.dispatchKeyEvent(event);
}

درخواست فوکوس برای PlayerView برای پیمایش کنترل‌های پخش و رد کردن تبلیغات مهم است. درخواست فوکوس را در onCreate مربوط به Activity در نظر بگیرید:

کاتلین

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

جاوا

@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 }
)