प्रेषक डॉन टर्नर, डेवलपर रिलेशनशिप इंजीनियर

जेटपैक मीडिया3 का परिचय
आज हम पहला अल्फा लॉन्च कर रहे हैं जेटपैक मीडिया3. यह मीडिया प्लेबैक के लिए समर्थन पुस्तकालयों का एक संग्रह है, जिसमें ExoPlayer भी शामिल है। यह लेख समझाएगा कि हमने Media3 क्यों बनाया, इसमें क्या शामिल है, और यह आपके एप्लिकेशन आर्किटेक्चर को कैसे सरल बना सकता है।
अन्य मीडिया एपीआई क्यों?
हमारे पास कई मौजूदा मीडिया एपीआई हैं: जेटपैक मीडिया MediaCompat के रूप में भी जाना जाता है, जेटपैक मीडिया 2, और एक्सोप्लेयर. इन पुस्तकालयों को विभिन्न लक्ष्यों के साथ विकसित किया गया था, और इनमें अतिव्यापी कार्यक्षमता के कई क्षेत्र हैं।
उदाहरण के लिए, ExoPlayer और Media2 दोनों में UI घटक हैं, और MediaCompat और Media2 में मीडिया सत्रों को संभालने के लिए कक्षाएं हैं।
किसी दिए गए उपयोग के मामले के लिए कौन सी लाइब्रेरी का उपयोग करना चुनौतीपूर्ण हो सकता है, और विभिन्न पुस्तकालयों की वस्तुएं अक्सर संगत नहीं होती हैं, जिसके लिए एडेप्टर या कनेक्टिंग कोड की आवश्यकता होती है। Media3 एक साथ अच्छी तरह से काम करने वाले पुस्तकालयों का एक सेट प्रदान करके इन चुनौतियों पर विजय प्राप्त करता है।
Media3 बनाने के लिए हमें चाहिए:
- यूआई, प्लेबैक और मीडिया सत्र प्रबंधन सहित हमारे मौजूदा मीडिया पुस्तकालयों में कार्यक्षमता के सामान्य क्षेत्रों की पहचान करें।
- शुद्ध और सर्वोत्तम भागों को मिला दिया।
- सभी “खिलाड़ी जैसी” वस्तुओं के लिए एक सामान्य खिलाड़ी इंटरफ़ेस बनाया (इस पर बाद में अधिक)।
बॉक्स में क्या है
Media3 में कई पुस्तकालय हैं। आसान मीडिया प्लेबैक के लिए सबसे प्रासंगिक नीचे दिए गए हैं।
एक सामान्य खिलाड़ी
हमारे वर्तमान मीडिया एपीआई में कई ऑब्जेक्ट हैं जो प्लेबैक कमांड स्वीकार करते हैं, जैसे “चलाएं,” “रोकें,” और “छोड़ें”। इन “खिलाड़ी-जैसी” वस्तुओं की पहचान करें और सुनिश्चित करें कि उन्हें लागू किया गया है सामान्य खिलाड़ी इंटरफ़ेस Media3 के विकास में सबसे बड़े उपक्रमों में से एक था।
हमने अद्यतन, विस्तारित और सुव्यवस्थित किया है ExoPlayer से प्लेयर इंटरफ़ेस सामान्य रूप से कार्य करने के लिए Player
Media3 के लिए इंटरफ़ेस।
कक्षाएं पसंद हैं MediaController
और MediaSession
पहले अन्य “खिलाड़ी-जैसी” वस्तुओं के संदर्भ नए खिलाड़ी को संदर्भित करने के लिए अद्यतन किए गए हैं।
UI घटकों के साथ सहभागिता करते समय यह उपयोगी होता है। दोनों ExoPlayer
और MediaController
अभी निष्पादित करें Player
, तो उनमें से एक का उपयोग संवाद करने के लिए किया जा सकता है StyledPlayerView
या अन्य UI घटक।

एक आरेख दिखाता है कि MediaController और ExoPlayer प्लेयर इंटरफ़ेस को कैसे कार्यान्वित करते हैं और इसका उपयोग UI तत्वों जैसे StyledPlayerView के साथ संचार करने के लिए किया जा सकता है
सरल वास्तुकला
इसका उपयोग करना Player
इंटरफ़ेस घटकों को जोड़ने की आवश्यकता से बचता है, जिससे कम कोड और आसान एप्लिकेशन आर्किटेक्चर की अनुमति मिलती है।
विशेष रूप से, इससे मीडिया सत्रों के साथ काम करना आसान हो जाता है। के बजाय का उपयोग करने का MediaSessionConnector extension
, या अपना खुद का “प्लेयर टू मीडिया सेशन” कनेक्टर टाइप करके MediaSession
इसका उपयोग करना Player
, इस कदर:
player = ExoPlayer.Builder(context).build() session = MediaSession.Builder(context, player).build()
आपका मीडिया सत्र अब स्वचालित रूप से आपके खिलाड़ी की स्थिति को दर्शाएगा, और आपके मीडिया सत्र को भेजे गए कोई भी आदेश स्वचालित रूप से आपके खिलाड़ी को अग्रेषित कर दिए जाएंगे। वह सब कोड की सिर्फ दो पंक्तियों में!
सामग्री पुस्तकालय प्रदान करना
यदि आपके ऐप को अपनी सामग्री लाइब्रेरी को किसी अन्य ऐप, जैसे कि Android Auto, के सामने प्रदर्शित करने की आवश्यकता है, तो उपयोग करें MediaLibraryService
, के बजाय एक MediaBrowserService
MediaCompat से।
फिर आप इसे बनाते हैं MediaLibrarySession
और कार्यान्वयन ए MediaLibrarySessionCallback
आपके कंटेंट ट्री को प्राप्त करने के लिए ब्राउजिंग एप्लिकेशन द्वारा किसकी विधियों को बुलाया जाएगा।

सामग्री लाइब्रेरी को प्रकाशित करने के लिए MediaLibraryService का उपयोग कैसे किया जा सकता है, यह दिखाने वाला आरेख
आसान अपडेट
जेटपैक पुस्तकालयों का उपयोग करने के मुख्य लाभों में से एक एपीआई स्थिरता है। यदि आप ऐसे प्रतीकों का उपयोग करते हैं जो एक स्थिर एपीआई का हिस्सा हैं, तो आपको आमतौर पर उसी मुख्य संस्करण में उस पुस्तकालय की नई रिलीज का उपयोग करने के लिए अपने कोड को अपडेट करने की आवश्यकता नहीं होती है।
Media3 में, प्लेयर एपीआई और मीडिया सत्र कक्षाओं सहित सबसे अधिक उपयोग की जाने वाली कुछ वस्तुओं को स्थिर के रूप में चिह्नित किया जाता है।
ExoPlayer की अधिकांश API सतहों को अस्थिर के रूप में चिह्नित किया गया है।

Media3 API के स्थिर और अस्थिर क्षेत्रों को दर्शाने वाला आरेख
आपको अस्थिर विधि या वर्ग का उपयोग करने के लिए जोड़ना होगा OptIn
इसका उपयोग करने से पहले आलोचना।
@androidx.annotation.OptIn(UnstableApi::class) private fun initializeExoPlayer() { // ... }
यदि आपका प्रोजेक्ट बहुत सारे अस्थिर तरीकों का उपयोग करता है, तो इस दमन को अपने प्रोजेक्ट-वाइड lint.xml में जोड़ना अधिक सुविधाजनक हो सकता है।
<issue id="UnsafeOptInUsageError"> <ignore regexp='(markerClass = androidx.media3.UnstableApi.class)'/> </issue>
सिर्फ इसलिए कि एपीआई के एक हिस्से को अस्थिर के रूप में चिह्नित किया गया है, इसका मतलब यह नहीं है कि एपीआई अविश्वसनीय है या आपको इसका उपयोग नहीं करना चाहिए – यह आपको यह बताने का एक तरीका है कि यह भविष्य में बदल सकता है।
शुरू करना
Media3 आज अल्फा में जारी किया गया है और हम चाहेंगे कि आप इसे आजमाएं।
ऐसा करने के सर्वोत्तम तरीकों में से एक जांच करना है डेमो ऐप, जो दिखाता है कि वीडियो और ऑडियो कैसे चलाएं और मीडिया सत्र के साथ समन्वय करें।
आप निम्न कलाकृति जोड़कर अपने एप्लिकेशन में Media3 निर्भरता जोड़ सकते हैं build.gradle
:
implementation 'androidx.media3:media3-ui:1.0.0-alpha01' implementation 'androidx.media3:media3-exoplayer:1.0.0-alpha01' implementation 'androidx.media3:media3-session:1.0.0-alpha01'
यदि आपके पास प्रतिक्रिया या समस्या है, तो कृपया बिंदु दर्ज करें. हमें आपसे सुनना प्रिय लगेगा।
अधिक जानकारी के लिए जांचें”AndroidX Media और ExoPlayer के लिए आगे क्या है?Android डेव समिट 2021 और Media3 रिलीज नोट्स.