अपने मीडिया ऐप्लिकेशन को कार के लिए 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 पर, Views या Compose का इस्तेमाल करके, साइन-इन और सेटिंग स्क्रीन भी बनाई जा सकती हैं. इनका इस्तेमाल कार पार्क होने पर किया जा सकता है.

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

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

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

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

वीडियो चलाने के कॉम्पोनेंट

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

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

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

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

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

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

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

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

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

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

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

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

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 में, File > New > New Module पर क्लिक करें.
  2. ऑटोमोटिव मॉड्यूल चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  3. ऐप्लिकेशन/लाइब्रेरी का नाम डालें. यह वह नाम है जो लोगों को Android Automotive OS पर आपके ऐप्लिकेशन के लिए दिखता है.
  4. मॉड्यूल का नाम डालें.
  5. अपने ऐप्लिकेशन से मैच करने के लिए, पैकेज के नाम में बदलाव करें.
  6. कम से कम लेवल वाला SDK टूल के लिए, API 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>

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

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

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

यह बताने के लिए कि आपका ऐप्लिकेशन वीडियो फ़ॉर्मैट के साथ काम करता है, अपने प्रोजेक्ट की 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"/>