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, फ़ोकस को मैनेज करने की सुविधा के साथ आते हैं.