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

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

Android for Cars क्या है?

कारों के लिए मीडिया ऐप्लिकेशन, उपयोगकर्ताओं को अपनी डिजिटल ज़िंदगी को अपनी कारों से आसानी से कनेक्ट करने का तरीका दे सकता है. फ़ोन पर इस्तेमाल होने वाले ऐप्लिकेशन को वाहनों के लिए उपलब्ध कराने से, उपयोगकर्ताओं को बेहतर अनुभव मिलता है. ऐसा करने के लिए, 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 पर, साइन-इन और सेटिंग स्क्रीन भी बनाई जा सकती हैं. ये स्क्रीन, कार पार्क होने पर इस्तेमाल की जा सकती हैं. इसके लिए, व्यू या कॉम्पोज़ का इस्तेमाल करें.

वीडियो ऐप्लिकेशन की मदद से, कार पार्क होने पर स्ट्रीमिंग वीडियो देखे जा सकते हैं. इन ऐप्लिकेशन का मुख्य मकसद, स्ट्रीमिंग वीडियो दिखाना है. ये ऐप्लिकेशन, व्यू या 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"/>