Android Automotive OS के लिए, पार्क किए गए ऐप्लिकेशन बनाएं

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

Android Automotive OS एम्युलेटर पर अपने मौजूदा ऐप्लिकेशन की जांच करना

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

ऐप्लिकेशन चलाते समय, साथ काम करने से जुड़ी समस्याओं पर ध्यान दें. जैसे:

अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइलों को कॉन्फ़िगर करना

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

Android Automotive OS की ज़रूरी सुविधाएं

Android Automotive OS के लिए बनाए गए ऐप्लिकेशन, कार में Play Store में तब ही दिखेंगे, जब android.hardware.type.automotive सुविधा के लिए AndroidManifest.xml फ़ाइल में <uses-feature> एलिमेंट शामिल होगा:

<manifest ...>
  ...
  <!--
    Depending on the track you choose to distribute your app, the android:required attribute can
    also be "false" or left unset. See Choose a track for Android Automotive OS.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]" />
  ...
</manifest>

पिछले कोड सैंपल में दिखाए गए एलिमेंट के अलावा, Android Automotive OS के लिए बनाए गए ऐप्लिकेशन के रूट <manifest> एलिमेंट में ये <uses-feature> एलिमेंट ज़रूर शामिल होने चाहिए:

<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"/>

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

पक्का करें कि ध्यान भटकाने वाली कोई गतिविधि न हो

यह पक्का करने के लिए कि आपका ऐप्लिकेशन सिर्फ़ पार्किंग के दौरान इस्तेमाल के लिए उपलब्ध हो, अपने मेनिफ़ेस्ट में किसी भी <activity> एलिमेंट में यह <meta-data> एलिमेंट शामिल न करें:

<!-- NOT ALLOWED -->
<meta-data
  android:name="distractionOptimized"
  android:value="true"/>

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

कैटगरी के हिसाब से मेनिफ़ेस्ट एंट्री

पार्क किए गए सभी ऐप्लिकेशन पर लागू होने वाली ऊपर बताई गई ज़रूरी शर्तों के अलावा, वीडियो और गेम कैटगरी के लिए कुछ और ज़रूरी शर्तें भी हैं:

Android Automotive OS के लिए अपने ऐप्लिकेशन को ऑप्टिमाइज़ करना

Android Automotive OS के लिए ऐप्लिकेशन बनाते समय, अपने उपयोगकर्ताओं को बेहतरीन अनुभव देने के लिए इन बातों को ध्यान में रखें.

बड़ी स्क्रीन के लिए ऑप्टिमाइज़ करना

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

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

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

विंडो इनसेट और डिसप्ले कटआउट के साथ काम करना

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

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

सिस्टम बार, इमर्सिव मोड, और एज-टू-एज रेंडरिंग

कार में सिस्टम बार का साइज़ और पोज़िशन, अन्य डिवाइसों के मुकाबले अलग हो सकती है. उदाहरण के लिए, नेविगेशन बार को स्क्रीन की बाईं, दाईं या नीचे की ओर रखा जा सकता है. भले ही, सबसे ऊपर स्टेटस बार और सबसे नीचे नेविगेशन बार हो (जैसा कि ज़्यादातर फ़ोन और टैबलेट में होता है), लेकिन कारों में इन एलिमेंट का साइज़ काफ़ी बड़ा होगा.

इसके अलावा, Android Automotive OS की मदद से OEM यह कंट्रोल कर सकते हैं कि ऐप्लिकेशन, इमर्सिव मोड में जाने और उससे बाहर निकलने के लिए, सिस्टम बार दिखाएं या छिपाएं. उदाहरण के लिए, ऐप्लिकेशन को सिस्टम बार छिपाने से रोककर, OEM यह पक्का कर सकते हैं कि वाहन के कंट्रोल, जैसे कि क्लाइमेट कंट्रोल हमेशा स्क्रीन पर ऐक्सेस किए जा सकें. अगर किसी OEM ने ऐप्लिकेशन को सिस्टम बार कंट्रोल करने से रोका है, तो सिस्टम बार दिखाने या छिपाने के लिए, WindowInsetsController (या WindowInsetsControllerCompat) एपीआई को कॉल करने पर कुछ नहीं होता. आपके ऐप्लिकेशन ने इनसेट में बदलाव किया है या नहीं, यह पता लगाने के तरीके के बारे में ज़्यादा जानने के लिए, show और hide के दस्तावेज़ देखें.

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

<!-- Depending on OEM configuration, these style declarations
     (and the corresponding runtime calls) may be ignored -->
<style name="...">
  <item name="android:statusBarColor">...</item>
  <item name="android:navigationBarColor">...</item>
  <item name="android:windowTranslucentStatus">...</item>
  <item name="android:windowTranslucentNavigation">...</status>
</style>

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

अलग-अलग आकार के डिसप्ले के हिसाब से बदलना

रेक्टैंगल डिसप्ले के अलावा, कुछ वाहनों में अनियमित आकार वाली स्क्रीन हो सकती हैं. जैसे, पहली इमेज में दिखाया गया है:

Android Automotive OS वाले डिवाइस का डायग्राम, जिसमें दाईं ओर घुमावदार डिसप्ले है.
पहली इमेज: Android Automotive OS डिवाइस, जिसका डिसप्ले दाईं ओर घुमावदार है. हरे रंग का एरिया, सुरक्षित रेक्टैंगल है, जो कि कर्व के डिसप्ले कटआउट के बाउंडिंग बॉक्स से ओवरलैप नहीं होता.

अगर आपका ऐप्लिकेशन किनारों तक रेंडर नहीं होता है, तो उसे सुरक्षित क्षेत्र में रेंडर करने के लिए, आपको कुछ करने की ज़रूरत नहीं है.

अगर आपका ऐप्लिकेशन किनारों तक रेंडर होता है, तो आपके पास यह चुनने का विकल्प होता है कि डिसप्ले में मौजूद कटिंग आउट के हिसाब से, ऐप्लिकेशन को कैसे दिखाया जाए. इसके लिए, संसाधनों का इस्तेमाल करके, अपने ऐप्लिकेशन की थीम के लिए android:windowLayoutInDisplayCutoutMode एट्रिब्यूट को सेट करें. इसके अलावा, रनटाइम के दौरान विंडो के layoutInDisplayCutoutMode एट्रिब्यूट में बदलाव करके भी ऐसा किया जा सकता है.

Android Automotive OS डिवाइसों पर मौजूद डिसप्ले कटआउट, मोबाइल डिवाइसों पर मौजूद कटआउट से अलग होते हैं. इसलिए, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT या LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES का इस्तेमाल न करें. इनका व्यवहार, मोबाइल डिवाइसों पर मौजूद कटआउट के लिए ऑप्टिमाइज़ किया गया है. इसके बजाय, LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER या LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS का इस्तेमाल करके, हमेशा काट-छांट वाले हिस्से से बचें या उसमें हमेशा जाएं. डिसप्ले कटआउट से जुड़े एपीआई के बारे में ज़्यादा जानने के लिए, डिसप्ले कटआउट की सुविधा देखें.

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

सुविधाएं बंद करना

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

PackageManager.hasSystemFeature एपीआई का इस्तेमाल करके, यह पता लगाया जा सकता है कि ऐप्लिकेशन Android Automotive OS पर चल रहा है या नहीं. इसके लिए, FEATURE_AUTOMOTIVE सुविधा की जांच करें, जैसा कि इस उदाहरण में दिखाया गया है:

Kotlin

val packageManager: PackageManager = ... // Get a PackageManager from a Context
val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Java

PackageManager packageManager = ... // Get a PackageManager from a Context
boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

इसके अलावा, अगर आपके ऐप्लिकेशन में Android Auto कॉम्पोनेंट भी है, तो कार के लिए Android ऐप्लिकेशन लाइब्रेरी में मौजूद CarConnection एपीआई का इस्तेमाल करके पता लगाया जा सकता है कि ऐप्लिकेशन, Android Automotive OS या Android Auto पर काम कर रहा है या नहीं. इसके अलावा, यह भी पता लगाया जा सकता है कि ऐप्लिकेशन किसी कार से कनेक्ट है या नहीं.

पिक्चर में पिक्चर (पीआईपी) के लिए, सबसे सही तरीकों का पालन करें. इससे यह पता चलेगा कि यह सुविधा उपलब्ध है या नहीं. साथ ही, इस सुविधा के हिसाब से सही तरीके से प्रतिक्रिया दी जा सकेगी.

ऑफ़लाइन स्थितियों को मैनेज करना

कारें अब ज़्यादा से ज़्यादा इंटरनेट से कनेक्ट हो रही हैं. हालांकि, ऐप्लिकेशन को इंटरनेट कनेक्शन के बिना भी काम करने की सुविधा देनी चाहिए. जैसे:

  • उपयोगकर्ता, वाहन बनाने वाली कंपनी के सदस्यता पैकेज के हिस्से के तौर पर मिलने वाले मोबाइल डेटा से ऑप्ट आउट कर सकते हैं.
  • कुछ इलाकों में मोबाइल डेटा का ऐक्सेस सीमित हो सकता है.
  • हो सकता है कि वाई-फ़ाई रेडियो वाली कारें वाई-फ़ाई की रेंज से बाहर हों या कोई OEM, मोबाइल नेटवर्क के लिए वाई-फ़ाई बंद कर दे.

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

अन्य संसाधनों का इस्तेमाल करना

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

अपना ऐप्लिकेशन वितरित करें

कार के लिए बने ऐप्लिकेशन की क्वालिटी के दिशा-निर्देशों के मुताबिक अपने ऐप्लिकेशन की जांच करने के बाद, Google Play का इस्तेमाल करके, Google की सुविधाओं वाली कारों में ऐप्लिकेशन उपलब्ध कराया जा सकता है. पब्लिश करने की प्रोसेस के बारे में ज़्यादा जानने के लिए, कार के लिए डिस्ट्रिब्यूट करें लेख पढ़ें.

पार्क किए गए ऐप्लिकेशन के बारे में सुझाव, शिकायत या राय देना

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

नई समस्या बनाना