अपने ऐप्लिकेशन को 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 पर, Views या Compose का इस्तेमाल करके, साइन-इन और सेटिंग स्क्रीन (गाड़ी पार्क होने पर इस्तेमाल के लिए) भी बनाई जा सकती हैं.
वीडियो ऐप्लिकेशन की मदद से, लोग कार पार्क होने पर स्ट्रीमिंग वीडियो देख सकते हैं. इन ऐप्लिकेशन का मुख्य मकसद, स्ट्रीमिंग वीडियो दिखाना है. ये ऐप्लिकेशन, Views या Compose का इस्तेमाल करके बनाए जाते हैं. ज़्यादा जानकारी के लिए, Android Automotive OS के लिए वीडियो चलाने वाले ऐप्लिकेशन बनाना और Android Automotive OS के लिए वीडियो ऐप्लिकेशन बनाना लेख पढ़ें.
कारों के लिए ऑडियो चलाने वाले ऐप्लिकेशन बनाना
इस गाइड में यह मान लिया गया है कि आपके पास पहले से ही मीडिया चलाने वाला कोई बुनियादी ऐप्लिकेशन है. अगर आपके पास ऐसा कोई ऐप्लिकेशन नहीं है, तो शुरू करने के लिए, मीडिया प्लेयर का बुनियादी ऐप्लिकेशन बनाना लेख पढ़ें.
इस गाइड में, आपको क्या करना है, इस बारे में जानकारी दी गई है. इसमें, खास दिशा-निर्देशों के साथ अन्य संसाधनों के लिंक भी शामिल हैं.
वीडियो चलाने के कॉम्पोनेंट
Media3, वीडियो चलाने के इस्तेमाल के मामलों के लिए कई अहम कॉम्पोनेंट उपलब्ध कराता है. अगर आपने Android की पिछली मीडिया लाइब्रेरी के साथ काम किया है, तो आपको इन कॉम्पोनेंट को बनाने वाली क्लास के बारे में पता होगा.
यहां दिए गए डायग्राम में दिखाया गया है कि ये कॉम्पोनेंट, किसी सामान्य ऐप्लिकेशन में एक साथ कैसे काम करते हैं.
ज़्यादा जानकारी के लिए, वीडियो चलाने के कॉम्पोनेंट लेख पढ़ें.
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() कॉलबैक तरीका ट्रिगर होता है. अपनी लाइब्रेरी का ऐक्सेस देने के लिए, रूट मीडिया आइटम को तुरंत वापस किया जा सकता है. जब 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>
मेनिफ़ेस्ट की यह एंट्री, एक XML फ़ाइल को रेफ़र करती है. इस फ़ाइल में यह एलान किया जाता है कि आपका ऐप्लिकेशन, कार से जुड़ी किन सुविधाओं के साथ काम करता है. यह बताने के लिए कि आपके पास एक मीडिया ऐप्लिकेशन है, अपने प्रोजेक्ट की res/xml/ डायरेक्ट्री में automotive_app_desc.xml नाम की एक एक्सएमएल फ़ाइल जोड़ें. इस फ़ाइल में यह कॉन्टेंट शामिल होना चाहिए:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Android Automotive OS के लिए सहायता का एलान करना
आपको कार के लिए एक मॉड्यूल बनाना होगा, क्योंकि आपके ऐप्लिकेशन की पूरी लॉजिक को कार के लिए बनाए गए ऐप्लिकेशन के साथ शेयर नहीं किया जा सकता. Android Automotive OS के कुछ कॉम्पोनेंट, जैसे कि मेनिफ़ेस्ट के लिए, प्लैटफ़ॉर्म के हिसाब से ज़रूरी शर्तें होती हैं. एक ऐसा मॉड्यूल बनाएं जो इन कॉम्पोनेंट के कोड को आपके प्रोजेक्ट के अन्य कोड से अलग रख सके. जैसे, आपके मोबाइल ऐप्लिकेशन के लिए इस्तेमाल किया गया कोड.
अपने प्रोजेक्ट में कार के लिए मॉड्यूल जोड़ने के लिए, यह तरीका अपनाएं:
- Android Studio में, फ़ाइल > नया > नया मॉड्यूल पर क्लिक करें.
- कार के लिए मॉड्यूल चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
- ऐप्लिकेशन/लाइब्रेरी का नाम डालें. यह वह नाम है जो लोगों को Android Automotive OS पर आपके ऐप्लिकेशन के लिए दिखता है.
- मॉड्यूल का नाम डालें.
- अपने ऐप्लिकेशन के हिसाब से पैकेज का नाम बदलें.
**कम से कम लेवल वाला SDK टूल** के लिए, **एपीआई 28: Android 9.0 (Pie)** चुनें. इसके बाद, **आगे बढ़ें** पर क्लिक करें.
Android Automotive OS के साथ काम करने वाली सभी कारें, Android 9 (एपीआई लेवल 28) या इसके बाद के वर्शन पर चलती हैं. इसलिए, यह वैल्यू चुनने पर, सभी काम करने वाली कारों को टारगेट किया जाता है.
**कोई गतिविधि नहीं** चुनें. इसके बाद, **पूरा करें** पर क्लिक करें.
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 के लिए बनाए गए ऐप्लिकेशन के मेनिफ़ेस्ट में एलान किया जाता है.
सेटिंग या साइन-इन से जुड़ी गतिविधियां जोड़ने के बाद,
android:appCategory="audio" एट्रिब्यूट को application एलिमेंट में सेट करके
और 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 के लिए वीडियो ऐप्लिकेशन बनाना लेख में बताया गया है. ऐसा करने के लिए, यह तरीका अपनाएं:
अपने ऐप्लिकेशन को वीडियो ऐप्लिकेशन के तौर पर मार्क करना
यह बताने के लिए कि आपका ऐप्लिकेशन वीडियो चलाने की सुविधा देता है, अपने मेनिफ़ेस्ट के <application>
एलिमेंट में
android:appCategory="video" एट्रिब्यूट जोड़ें.
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Android Automotive OS के हार्डवेयर की सुविधा का एलान करना
यह एलान करने के लिए कि आपका ऐप्लिकेशन, Android Automotive OS वाले डिवाइसों के साथ काम करता है, अपने मेनिफ़ेस्ट में
android.hardware.type.automotive <uses-feature> एलिमेंट जोड़ें.
android:required एट्रिब्यूट को "false" या
"true" पर सेट करना है या नहीं, इस बारे में जानकारी पाने के लिए,
AAOS के हार्डवेयर की सुविधा का एलान करना
लेख पढ़ें.
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>