التنقّل باستخدام لوحة التحكّم على Android TV
يحتوي جهاز التحكّم عن بُعد في Android TV على لوحة تحكّم ترسل طلبات
تصل كأحداث رئيسية إلى dispatchKeyEvent(KeyEvent) في Activity. يجب تفويض هذه المهام إلى 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 مهمًا للتنقّل في عناصر التحكّم في التشغيل وتخطّي الإعلانات. ننصحك بطلب التركيز على onCreate من
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(); // ... }
إذا كنت تستخدم 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 التي تحتوي على أزرار، تدير التركيز تلقائيًا.