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