Android TV

پیمایش پد کنترل در Android TV

کنترل از راه دور Android TV دارای یک پد کنترل است که فرمان‌هایی را ارسال می‌کند که به‌عنوان رویدادهای کلیدی در 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 },
)

از ترکیب‌پذیر Player استفاده کنید

اگر از ترکیب‌پذیر Player از کتابخانه media3-ui-compose-material3 استفاده می‌کنید، پیمایش پد کنترل به‌طور پیش‌فرض پشتیبانی می‌شود. مؤلفه‌های Player و PlayerDefaults دارای نمونه خودکار FocusRequester هستند که مؤلفه‌ها را با پد کنترل پیمایش می‌کند، بنابراین به کد اضافی یا Modifier.focusRequester برای مدیریت تمرکز و رویدادهای کلیدی نیاز ندارید:

PlayerDefaults در جایگاه‌های بالا، وسط، و پایین چیده شده‌اند تا پیمایش با پد کنترل حسی باشد. برای هرگونه سفارشی‌سازی و لغو کردن آن جایگاه‌ها، مطمئن شوید که مؤلفه‌ای با پیمایش خوب ارائه می‌دهید. توجه داشته باشید که اکثر مؤلفه‌های Compose، مانند Slider یا Row که حاوی دکمه هستند، تمرکز را به‌طور پیش‌فرض مدیریت می‌کنند.