پیمایش پد کنترل در 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 که حاوی دکمه هستند، تمرکز را بهطور پیشفرض مدیریت میکنند.