Android TV

التنقّل باستخدام لوحة التحكّم الاتجاهية على 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 التي تحتوي على أزرار، تدير التركيز تلقائيًا.