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 कंपोज़ेबल का इस्तेमाल करना

अगर media3-ui-compose-material3 लाइब्रेरी से Player कंपोज़ेबल का इस्तेमाल किया जाता है, तो डी-पैड नेविगेशन की सुविधा डिफ़ॉल्ट रूप से काम करती है. Player और PlayerDefaults कॉम्पोनेंट में, अपने-आप FocusRequester इंस्टेंस होता है. यह डी-पैड की मदद से कॉम्पोनेंट को ट्रैवर्स करता है. इसलिए, आपको फ़ोकस और मुख्य इवेंट को मैनेज करने के लिए, अतिरिक्त कोड या Modifier.focusRequester की ज़रूरत नहीं होती:

PlayerDefaults को सबसे ऊपर, बीच में, और सबसे नीचे वाले स्लॉट में व्यवस्थित किया गया है, ताकि डी-पैड नेविगेशन का इस्तेमाल करना आसान हो. इन स्लॉट को पसंद के मुताबिक बनाने और इनमें बदलाव करने के लिए, पक्का करें कि आपने ऐसा कॉम्पोनेंट उपलब्ध कराया हो जिसे आसानी से नेविगेट किया जा सके. ध्यान दें कि Compose के ज़्यादातर कॉम्पोनेंट, जैसे कि Slider या Row, जिनमें बटन होते हैं, वे फ़ोकस को अपने-आप मैनेज करते हैं.