Android TV

Android TV पर डी-पैड नेविगेशन

Android TV के रिमोट कंट्रोल में डी-पैड कंट्रोल होता है. यह कंट्रोल, आपके Activity के dispatchKeyEvent(KeyEvent) पर, कुंजी इवेंट के तौर पर पहुंचने वाले निर्देश भेजता है. इन्हें 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 के लिए फ़ोकस का अनुरोध करना ज़रूरी है. Activity के onCreate में फ़ोकस का अनुरोध करने पर विचार करें:

Kotlin

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

Java

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView.requestFocus();
  // ...
}

अगर Android TV पर Compose का इस्तेमाल किया जा रहा है, तो आपको 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, फ़ोकस को मैनेज करते हैं.