अपने मीडिया ऐप्लिकेशन को कार के लिए Android ऐप्लिकेशन पर उपलब्ध कराएं

अपने ऐप्लिकेशन को Android Auto या Android Automotive OS वाले वाहनों के लिए उपलब्ध कराएं. ऐप्लिकेशन के लिए ऐसा आर्किटेक्चर इस्तेमाल करें जो दोनों मामलों में काम करता हो, ताकि हर उपयोगकर्ता आपके ऐप्लिकेशन का आनंद ले सके.

कार के लिए Android क्या है?

कारों के लिए मीडिया ऐप्लिकेशन, उपयोगकर्ताओं को अपनी डिजिटल ज़िंदगी को अपनी कारों से आसानी से कनेक्ट करने का तरीका दे सकता है. फ़ोन पर इस्तेमाल होने वाले ऐप्लिकेशन को वाहनों के लिए उपलब्ध कराने से, उपयोगकर्ताओं को बेहतर अनुभव मिलता है. ऐसा करने के लिए, Android Auto या Android Automotive OS के साथ इंटिग्रेट करें.

कारों के लिए बने Android ऐप्लिकेशन, ड्राइवर की एकाग्रता में किसी भी तरह की रुकावट नहीं डालने चाहिए. सबसे सही तरीकों का इस्तेमाल करके, ध्यान भटकने की समस्या को कम किया जा सकता है. जैसे, बोलकर दिए जाने वाले निर्देशों का इस्तेमाल करना और बहुत काम का विज़ुअल डिज़ाइन. इस तरह, आपका मीडिया ऐप्लिकेशन ड्राइवर को समय पर जानकारी सिर्फ़ तब दिखा सकता है, जब वह काम की हो. साथ ही, सामान्य टास्क के लिए अनुमानित पैटर्न का इस्तेमाल किया जा सकता है.

Android Auto

Android Auto, उन उपयोगकर्ताओं के लिए ड्राइवर के हिसाब से ऑप्टिमाइज़ किया गया ऐप्लिकेशन अनुभव उपलब्ध कराता है जिनके पास Android Auto ऐप्लिकेशन वाला Android फ़ोन और Android Auto के साथ काम करने वाली कार या आफ़्टर मार्केट स्टीरियो सिस्टम है. वे अपने फ़ोन से कनेक्ट करके, सीधे अपनी कार के डिसप्ले पर आपके ऐप्लिकेशन का इस्तेमाल कर सकते हैं. ड्राइवर के लिए ड्राइवर के लिए ऑप्टिमाइज़ किया गया इंटरफ़ेस दिखाने के लिए Android Auto जिन सेवाओं का इस्तेमाल करता है उन्हें बनाकर Android Auto को अपने फ़ोन ऐप्लिकेशन से कनेक्ट करने की सुविधा चालू की जा सकती है.

Android Automotive OS

Android Automotive OS, Android पर आधारित सूचना और मनोरंजन की सुविधा देने वाला डिवाइस है. इसे वाहनों में बनाया गया है. कार का सिस्टम, Android पर काम करने वाला एक स्टैंडअलोन डिवाइस है. इसे ड्राइविंग के लिए ऑप्टिमाइज़ किया गया है. Android Automotive OS की मदद से, लोग आपके ऐप्लिकेशन को अपने फ़ोन के बजाय सीधे तौर पर कार में इंस्टॉल करते हैं.

इस सुविधा के साथ काम करने वाली ऐप्लिकेशन कैटगरी

मीडिया ऐप्लिकेशन की मदद से, उपयोगकर्ता कार में संगीत, रेडियो, ऑडियो बुक, और अन्य ऑडियो कॉन्टेंट को ब्राउज़ और चला सकते हैं. ज़्यादा जानकारी के लिए, कार के लिए ऑडियो चलाने वाले ऐप्लिकेशन बनाना लेख पढ़ें. ज़्यादा जानकारी के लिए, कार के लिए मीडिया ऐप्लिकेशन बनाएं पर जाएं.

मीडिया ऐप्लिकेशन MediaLibraryService और MediaSession का इस्तेमाल करके बनाए जाते हैं. Android Automotive OS पर, View या Compose की सुविधा का इस्तेमाल करके, साइन इन और सेटिंग स्क्रीन (पार्क किए जाने के दौरान इस्तेमाल करने के लिए) बनाई जा सकती हैं.

वीडियो ऐप्लिकेशन की मदद से, कार पार्क होने पर स्ट्रीमिंग वीडियो देखे जा सकते हैं. इन ऐप्लिकेशन का मुख्य मकसद, स्ट्रीमिंग वीडियो दिखाना है. ये ऐप्लिकेशन, व्यू या कॉम्पोज़ का इस्तेमाल करके बनाए जाते हैं. ज़्यादा जानकारी के लिए, Android Automotive OS के लिए वीडियो चलाने वाले ऐप्लिकेशन बनाएं लेख पढ़ें. ज़्यादा जानकारी के लिए, Android Automotive OS के लिए वीडियो ऐप्लिकेशन बनाएं पर जाएं.

कार के लिए ऑडियो प्लेबैक ऐप्लिकेशन बनाना

इस गाइड में यह माना गया है कि आपके पास मीडिया चलाने वाला कोई बुनियादी ऐप्लिकेशन पहले से मौजूद है. अगर आपके पास यह नहीं है, तो शुरू करने के लिए, बुनियादी मीडिया प्लेयर ऐप्लिकेशन बनाएं पर जाएं.

इस गाइड में आपको यह जानकारी मिलती है कि आपको क्या करना है. इसमें, ज़्यादा जानकारी देने वाले अन्य संसाधनों के लिंक भी शामिल हैं.

प्लेबैक कॉम्पोनेंट

Media3, वीडियो चलाने के उदाहरणों के लिए कई मुख्य कॉम्पोनेंट उपलब्ध कराता है. अगर आपने Android की पिछली मीडिया लाइब्रेरी के साथ काम किया है, तो आपको इन कॉम्पोनेंट को बनाने वाली क्लास के बारे में पता होगा.

नीचे दिए गए डायग्राम में दिखाया गया है कि ये कॉम्पोनेंट, किसी सामान्य ऐप्लिकेशन में एक साथ कैसे काम करते हैं.

Media3 का इस्तेमाल करने वाले मीडिया ऐप्लिकेशन के अलग-अलग कॉम्पोनेंट, इंटरफ़ेस और क्लास शेयर करने की वजह से, कई आसान तरीकों से एक-दूसरे से जुड़े होते हैं.
पहली इमेज: मीडिया ऐप्लिकेशन के कॉम्पोनेंट

ज़्यादा जानकारी के लिए, वीडियो चलाने के कॉम्पोनेंट देखें.

MediaLibraryService और MediaLibrarySession लागू करना

MediaLibraryService, आपकी मीडिया लाइब्रेरी को दिखाने और उसे ऐक्सेस करने की अनुमति देने के लिए, स्टैंडर्ड एपीआई उपलब्ध कराता है. अपने मीडिया ऐप्लिकेशन में Android Auto या Android Automotive OS के साथ काम करने की सुविधा जोड़ते समय, ऐसा करना ज़रूरी है. ऐसा इसलिए, क्योंकि ये प्लैटफ़ॉर्म आपकी मीडिया लाइब्रेरी के लिए, ड्राइवर के लिए सुरक्षित यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराते हैं. MediaLibraryService को लागू करने और इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, MediaLibraryService के साथ कॉन्टेंट उपलब्ध कराना देखें.

प्लेबैक कंट्रोल के लिए, मीडिया सेशन का इस्तेमाल करें. MediaSession एपीआई की मदद से, ऑडियो या वीडियो प्लेयर के साथ सभी तरह के इंटरैक्ट किए जा सकते हैं. Jetpack Media3 लाइब्रेरी में MediaLibrarySession शामिल है. यह कॉन्टेंट ब्राउज़ करने वाले एपीआई जोड़ने के लिए, MediaSession को बढ़ाता है.

मीडिया सेशन को प्लेयर से कनेक्ट करने से, ऐप्लिकेशन बाहरी सोर्स से मीडिया चलाने के लिए विज्ञापन दे सकता है. साथ ही, Android Auto, Android Automotive OS या Google Assistant जैसे बाहरी सोर्स से वीडियो चलाने के निर्देश पा सकता है. ज़्यादा जानकारी के लिए, MediaSession का इस्तेमाल करके, वीडियो चलाने की सुविधा को कंट्रोल करना और विज्ञापन दिखाना और MediaLibrarySession का इस्तेमाल करना लेख पढ़ें.

आपके मीडिया सेशन में, कम से कम इन प्लेयर कमांड के साथ काम करने का एलान होना चाहिए:

प्लेबैक कंट्रोल चालू करें गाइड में, उन तरीकों के बारे में बताया गया है जिनकी मदद से कारों में प्लेबैक कंट्रोल को अपनी पसंद के मुताबिक बनाया जा सकता है.

जब Android Auto या Android Automotive OS आपके ऐप्लिकेशन से कनेक्ट होता है, तब वह उसे दिखाने के लिए कॉन्टेंट लाइब्रेरी का अनुरोध करता है. इससे onGetLibraryRoot() कॉलबैक मैथड ट्रिगर होता है. अपनी लाइब्रेरी का ऐक्सेस देने के लिए, रूट मीडिया आइटम को तुरंत वापस लाया जा सकता है. onGetChildren() कॉलबैक का तरीका तब इस्तेमाल किया जाता है, जब Android Auto या Android Automotive OS आपकी कॉन्टेंट लाइब्रेरी के गहरे लेवल को ब्राउज़ करने की कोशिश कर रहे हों.

ये प्लैटफ़ॉर्म, आपकी कॉन्टेंट लाइब्रेरी के स्ट्रक्चर पर कुछ और सीमाएं भी लागू करते हैं. अपनी कॉन्टेंट लाइब्रेरी को पसंद के मुताबिक दिखाने के तरीके के बारे में जानने के लिए, मीडिया ब्राउज़र सेवा बनाना गाइड देखें.

Android Auto के साथ काम करने की सुविधा का एलान करना

आपका फ़ोन ऐप्लिकेशन, Android Auto के साथ काम करता है, यह बताने के लिए मेनिफ़ेस्ट में इस एंट्री का इस्तेमाल करें:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

इस मेनिफ़ेस्ट एंट्री में, एक एक्सएमएल फ़ाइल के बारे में बताया गया है. इसमें यह जानकारी होती है कि आपका ऐप्लिकेशन, वाहन से जुड़ी कौनसी सुविधाएं देता है. यह बताने के लिए कि आपका एक मीडिया ऐप्लिकेशन है, अपने प्रोजेक्ट में res/xml/ डायरेक्ट्री में automotive_app_desc.xml नाम की एक्सएमएल फ़ाइल जोड़ें. इस फ़ाइल में यह जानकारी शामिल होनी चाहिए:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Android Automotive OS के साथ काम करने का एलान करना

आपको एक वाहन संबंधित मॉड्यूल बनाना होगा, क्योंकि आपके ऐप्लिकेशन के सभी लॉजिक को वाहन संबंधित ऐप्लिकेशन के साथ शेयर नहीं किया जा सकता. Android Automotive OS के कुछ कॉम्पोनेंट, जैसे कि मेनिफ़ेस्ट के लिए, प्लैटफ़ॉर्म के हिसाब से ज़रूरी शर्तें होती हैं. एक ऐसा मॉड्यूल बनाएं जो इन कॉम्पोनेंट के कोड को आपके प्रोजेक्ट के अन्य कोड से अलग रख सके. जैसे, आपके मोबाइल ऐप्लिकेशन के लिए इस्तेमाल किया गया कोड.

अपने प्रोजेक्ट में वाहन से जुड़ा मॉड्यूल जोड़ने के लिए, यह तरीका अपनाएं:

  1. Android Studio में, फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.
  2. वाहन संबंधित मॉड्यूल चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  3. ऐप्लिकेशन/लाइब्रेरी का नाम डालें. यह वह नाम है जो उपयोगकर्ताओं को Android Automotive OS पर आपके ऐप्लिकेशन के लिए दिखता है.
  4. मॉड्यूल का नाम डालें.
  5. अपने ऐप्लिकेशन से मैच करने के लिए, पैकेज का नाम बदलें.
  6. कम से कम SDK टूल के लिए, एपीआई 28: Android 9.0 (Pie) चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.

    Android Automotive OS के साथ काम करने वाली सभी कारें, Android 9 (एपीआई लेवल 28) या उसके बाद के वर्शन पर काम करती हैं. इसलिए, इस वैल्यू को चुनने पर, इसके साथ काम करने वाली सभी कारों को टारगेट किया जाता है.

  7. कोई गतिविधि नहीं चुनें. इसके बाद, पूरा करें पर क्लिक करें.

Android Studio में मॉड्यूल बनाने के बाद, अपने नए ऑटोमोटिव मॉड्यूल में AndroidManifest.xml को खोलें:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

application एलिमेंट में, ऐप्लिकेशन के बारे में कुछ स्टैंडर्ड जानकारी होती है. साथ ही, इसमें uses-feature एलिमेंट भी होता है, जो Android Automotive OS के साथ काम करने की जानकारी देता है. ध्यान दें कि मेनिफ़ेस्ट में किसी भी गतिविधि के बारे में जानकारी नहीं दी गई है.

अगर आपने सेटिंग या साइन इन करने की गतिविधियां लागू की हैं, तो उन्हें यहां जोड़ें. ये गतिविधियां, सिस्टम के ज़रिए साफ़ तौर पर दिए गए इंटेंट का इस्तेमाल करके ट्रिगर की जाती हैं. साथ ही, ये ऐसी ही गतिविधियां हैं जिनके बारे में Android Automotive OS वाले ऐप्लिकेशन के मेनिफ़ेस्ट में बताया जाता है.

कोई भी सेटिंग या साइन-इन गतिविधियां जोड़ने के बाद, application एलिमेंट में android:appCategory="audio" एट्रिब्यूट को सेट करके और ये uses-feature एलिमेंट जोड़कर, अपनी मेनिफ़ेस्ट फ़ाइल को पूरा करें:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

इन सुविधाओं को साफ़ तौर पर required="false" पर सेट करने से यह पक्का होता है कि आपका ऐप्लिकेशन, Automotive OS डिवाइसों में उपलब्ध हार्डवेयर सुविधाओं के साथ काम करता है.

आपका ऐप्लिकेशन Android Automotive OS के साथ काम करता है, यह बताने के लिए मेनिफ़ेस्ट में इस एंट्री का इस्तेमाल करें:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

इस मेनिफ़ेस्ट एंट्री में, एक एक्सएमएल फ़ाइल के बारे में बताया गया है. इसमें, वाहन से जुड़ी उन सुविधाओं के बारे में जानकारी दी गई है जिन पर आपका ऐप्लिकेशन काम करता है.

यह बताने के लिए कि आपका ऐप्लिकेशन मीडिया ऐप्लिकेशन है, अपने प्रोजेक्ट में res/xml/ डायरेक्ट्री में automotive_app_desc.xml नाम की एक्सएमएल फ़ाइल जोड़ें. इस फ़ाइल में यह कॉन्टेंट शामिल करें:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

इंटेंट फ़िल्टर

Android Automotive OS, आपके मीडिया ऐप्लिकेशन में गतिविधियों को ट्रिगर करने के लिए, साफ़ तौर पर बताए गए इंटेंट का इस्तेमाल करता है. मेनिफ़ेस्ट फ़ाइल में ऐसी कोई भी गतिविधि शामिल न करें जिसमें CATEGORY_LAUNCHER या ACTION_MAIN इंटेंट फ़िल्टर हों.

नीचे दिए गए उदाहरण में दिखाई गई गतिविधि के ज़रिए, आम तौर पर किसी फ़ोन या किसी दूसरे मोबाइल डिवाइस को टारगेट किया जाता है. इन गतिविधियों के बारे में उस मॉड्यूल में बताएं जो फ़ोन ऐप्लिकेशन बनाता है, न कि उस मॉड्यूल में जो आपका Android Automotive OS ऐप्लिकेशन बनाता है.

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

आगे के चरण

अब आपके पास Android Auto और Android Automotive OS के लिए ऐप्लिकेशन है. इसलिए, हो सकता है कि आप अपने ऐप्लिकेशन को ऑप्टिमाइज़ करने के लिए कुछ और कदम उठाना चाहें, ताकि गाड़ी चलाते समय उसे ज़्यादा सुरक्षित तरीके से इस्तेमाल किया जा सके. उपयोगकर्ताओं को सुरक्षित और आसान अनुभव देने के लिए, ज़्यादा सुझाव पाने के लिए, बोली से की जाने वाली कार्रवाइयां, ध्यान भटकाने से जुड़ी सुरक्षा से जुड़ी जानकारी, और गड़बड़ी को ठीक करने से जुड़ी तकनीकी गाइड देखें.

Android Automotive OS के लिए वीडियो चलाने वाले ऐप्लिकेशन बनाना

वीडियो ऐप्लिकेशन, कार में मौजूद मीडिया ऐप्लिकेशन से अलग कैटगरी में रखे जाते हैं. इसलिए, आपको वीडियो ऐप्लिकेशन से जुड़ी कुछ खास शर्तों के बारे में जानकारी होनी चाहिए. इनके बारे में, Android Automotive OS के लिए पार्क किए गए ऐप्लिकेशन बनाना और Android Automotive OS के लिए वीडियो ऐप्लिकेशन बनाना सेक्शन में बताया गया है. आपको इन निर्देशों का पालन करना होगा.

अपने ऐप्लिकेशन को वीडियो ऐप्लिकेशन के तौर पर मार्क करना

यह बताने के लिए कि आपका ऐप्लिकेशन वीडियो के साथ काम करता है, अपने प्रोजेक्ट की res/xml/ डायरेक्ट्री में automotive_app_desc.xml नाम की एक्सएमएल फ़ाइल जोड़ें. इस फ़ाइल में, यह कॉन्टेंट शामिल करें:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

इसके बाद, अपने मेनिफ़ेस्ट के application एलिमेंट में, एक्सएमएल फ़ाइल का रेफ़रंस देने वाला यह meta-data एलिमेंट जोड़ें:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>