अपने मीडिया ऐप्लिकेशन में Android Automotive OS की सुविधा जोड़ें

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

डेवलपमेंट की खास जानकारी

Android Automotive OS की सुविधा जोड़ने के लिए, सिर्फ़ कुछ चरणों को पूरा करना होगा. इनके बारे में बताया गया है सेक्शन पढ़ें:

  1. Android Studio में वाहन संबंधित सुविधाएं चालू करें.
  2. ऑटोमोटिव मॉड्यूल बनाएं.
  3. Gredle डिपेंडेंसी अपडेट करें.
  4. विकल्प के तौर पर, सेटिंग और साइन-इन गतिविधियां लागू करें.
  5. इसके अलावा, मीडिया होस्ट से जुड़े संकेत पढ़ें.

डिज़ाइन पर ध्यान देना

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

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

अपना प्रोजेक्ट सेट अप करना

चालू करने के लिए, आपको अपने ऐप्लिकेशन के प्रोजेक्ट के कई हिस्से सेट अप करने होंगे Android Automotive OS के लिए

Android Studio में वाहन संबंधित सुविधाएं चालू करें

Android Studio 4.0 या इसके बाद के वर्शन का इस्तेमाल करें, ताकि यह पक्का किया जा सके कि Automotive OS की सभी सुविधाएं चालू किया गया.

ऑटोमोटिव मॉड्यूल बनाएं

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

अपने प्रोजेक्ट में Automotive मॉड्यूल जोड़ने के लिए, यह तरीका अपनाएं:

  1. Android Studio में, फ़ाइल > नया > नया मॉड्यूल.
  2. Automotive Module को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  3. ऐप्लिकेशन/लाइब्रेरी का नाम डालें. लोगों को यह नाम दिखता है Android Automotive OS पर आपका ऐप्लिकेशन.
  4. मॉड्यूल का नाम डालें.
  5. पैकेज के नाम में बदलाव करें, ताकि वह आपके ऐप्लिकेशन के हिसाब से हो.
  6. कम से कम SDK टूल के लिए, एपीआई 28: Android 9.0 (पाई) चुनें. इसके बाद, क्लिक करें आगे बढ़ें पर टैप करें.

    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 के लिए, मीडिया सहायता का एलान करें

इस मेनिफ़ेस्ट एंट्री का इस्तेमाल करके, यह बताएं कि आपका ऐप्लिकेशन काम करता है Android Automotive ओएस:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

इस मेनिफ़ेस्ट एंट्री का मतलब ऐसी एक्सएमएल फ़ाइल से है जो Automotive के बारे में जानकारी देती है जो आपके ऐप्लिकेशन पर काम करते हैं.

यह बताने के लिए कि आपका एक मीडिया ऐप्लिकेशन है, आपकी 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>

Gradle डिपेंडेंसी अपडेट करना

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

my-auto-module/build.gradle

ग्रूवी

buildscript {
    ...
    dependencies {
        ...
        implementation project(':shared_module_name')
    }
}

Kotlin

buildscript {
    ...
    dependencies {
        ...
        implementation(project(":shared_module_name"))
    }
}

सेटिंग और साइन-इन गतिविधियों को लागू करें

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

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

गतिविधि से जुड़े वर्कफ़्लो

नीचे दिया गया डायग्राम दिखाता है कि कोई उपयोगकर्ता आपकी सेटिंग और Android Automotive OS का इस्तेमाल करके साइन-इन करने से जुड़ी गतिविधियां:

सेटिंग और साइन-इन गतिविधियों के लिए वर्कफ़्लो

पहला डायग्राम. सेटिंग और साइन-इन से जुड़ी गतिविधि का वर्कफ़्लो.

अपनी सेटिंग और साइन-इन से जुड़ी गतिविधियों में, ध्यान भटकाने वाली गतिविधियों को कम करें

यह पक्का करने के लिए कि आपकी सेटिंग और/या साइन-इन गतिविधियां सिर्फ़ इस्तेमाल के लिए उपलब्ध हों जब उपयोगकर्ता की कार पार्क की जा रही हो, तब पुष्टि करें कि <activity> एलिमेंट नीचे दिया गया <meta-data> एलिमेंट शामिल न करें. आपका ऐप्लिकेशन अस्वीकार कर दिया जाएगा समीक्षा के दौरान तब ही सबमिट करें, जब ऐसा कोई एलिमेंट मौजूद हो.

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

कोई सेटिंग गतिविधि जोड़ें

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

सेटिंग गतिविधि का एलान करना

आपको अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, सेटिंग गतिविधि का एलान करना होगा, जैसा कि यहां दिखाया गया है यहां दिया गया कोड स्निपेट जोड़ें:

<application>
    ...
    <activity android:name=".AppSettingsActivity"
              android:exported="true"
              android:theme="@style/SettingsActivity"
              android:label="@string/app_settings_activity_title">
        <intent-filter>
            <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
        </intent-filter>
    </activity>
    ...
</application>

अपनी सेटिंग गतिविधि लागू करना

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

इस भाग का शेष हिस्सा दिखाता है कि आप Universal Android Music Player (UAMP) सैंपल ऐप्लिकेशन आपके ऐप्लिकेशन की सेटिंग गतिविधि लागू करनी होगी.

शुरू करने के लिए, सैंपल कोड डाउनलोड करें:

# Clone the UAMP repository
git clone https://github.com/android/uamp.git

# Fetch the appropriate pull request to your local repository
git fetch origin pull/323/head:NEW_LOCAL_BRANCH_NAME

# Switch to the new branch
git checkout NEW_LOCAL_BRANCH_NAME

अपनी गतिविधि लागू करने के लिए, यह तरीका अपनाएं:

  1. automotive/automotive-lib फ़ोल्डर को अपने Automotive मॉड्यूल में कॉपी करें.
  2. प्रायॉरिटी ट्री को इस तरह परिभाषित करें automotive/src/main/res/xml/preferences.xml.
  3. PreferenceFragmentCompat लागू करें जिसे आपकी सेटिंग गतिविधि में दिखाया जाता है. SettingsFragment.kt और Uएएमपी में SettingsActivity.kt फ़ाइलें और Android की सेटिंग में गाइड पढ़ें.

सेटिंग गतिविधि को लागू करते समय, इन सबसे सही तरीकों का इस्तेमाल करें प्राथमिकता लाइब्रेरी में मौजूद कुछ कॉम्पोनेंट:

  • मुख्य व्यू के नीचे दो से ज़्यादा लेवल नहीं होने चाहिए आपकी सेटिंग गतिविधि.
  • DropDownPreference का इस्तेमाल न करें. इसके बजाय, ListPreference का इस्तेमाल करें.
  • संगठन के कॉम्पोनेंट:
    • PreferenceScreen
      • यह आपके प्राथमिकताएं ट्री का टॉप लेवल होना चाहिए.
    • PreferenceCategory
      • इसका इस्तेमाल, Preference ऑब्जेक्ट को एक साथ ग्रुप करने के लिए किया जाता है.
      • title शामिल करें.
  • नीचे दिए गए सभी कॉम्पोनेंट में key और title शामिल करें. आप यह भी कर सकते हैं एक summary, एक icon या दोनों को शामिल करें:
    • Preference
      • अपनेonPreferenceTreeClick() PreferenceFragmentCompat लागू करना.
    • CheckBoxPreference
      • शर्त वाले टेक्स्ट के लिए, summary के बजाय summaryOn या summaryOff का इस्तेमाल किया जा सकता है.
    • SwitchPreference
      • शर्त वाले टेक्स्ट के लिए, summary के बजाय summaryOn या summaryOff का इस्तेमाल किया जा सकता है.
      • इसमें switchTextOn या switchTextOff शामिल हो सकता है.
    • SeekBarPreference
      • एक min, max, और defaultValue शामिल करें.
    • EditTextPreference
      • dialogTitle, positiveButtonText, और negativeButtonText शामिल करें.
      • इसमें dialogMessage और/या dialogLayoutResource शामिल हो सकते हैं.
    • com.example.android.uamp.automotive.lib.ListPreference
      • ज़्यादातर ListPreference से मिलता है.
      • इसका इस्तेमाल, Preference ऑब्जेक्ट की एक विकल्प वाली सूची दिखाने के लिए किया जाता है.
      • इसमें entries का कलेक्शन और उससे जुड़ा entryValues होना चाहिए.
    • com.example.android.uamp.automotive.lib.MultiSelectListPreference
      • ज़्यादातर MultiSelectListPreference से मिलता है
      • इसका इस्तेमाल, Preference ऑब्जेक्ट की कई विकल्पों वाली सूची दिखाने के लिए किया जाता है.
      • इसमें entries का कलेक्शन और उससे जुड़ा entryValues होना चाहिए.

साइन-इन गतिविधि जोड़ें

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

ऐप्लिकेशन शुरू होने पर साइन इन करना ज़रूरी है

मीडिया ब्राउज़र इस्तेमाल करें, ताकि उपयोगकर्ता को ऐप्लिकेशन इस्तेमाल करने से पहले साइन इन करना पड़े सेवा को ये काम करने होंगे:

  1. अपनी सेवा की onLoadChildren() विधि में, इसका उपयोग करके null परिणाम भेजें sendResult() तरीका.
  2. मीडिया सेशन के लिए, PlaybackStateCompat को सेट करें STATE_ERROR तक setState() का इस्तेमाल करके तरीका. इससे Android Automotive OS को पता चलता है कि अब तक कोई और कार्रवाई नहीं की जा सकती गड़बड़ी को ठीक कर दिया गया है.
  3. मीडिया सेशन की PlaybackStateCompat सेट करें ERROR_CODE_AUTHENTICATION_EXPIRED के लिए गड़बड़ी का कोड. इससे Android Automotive OS को पता चलता है कि उपयोगकर्ता को पुष्टि करनी होगी.
  4. मीडिया सेशन की PlaybackStateCompat सेट करें setErrorMessage() का इस्तेमाल करके गड़बड़ी का मैसेज दिखना तरीका. गड़बड़ी का यह मैसेज लोगों को दिख रहा है. इसलिए, इसे स्थानीय भाषा में लिखें उपयोगकर्ता की मौजूदा स्थान-भाषा के लिए.
  5. मीडिया सेशन की PlaybackStateCompat सेट करें setExtras() का इस्तेमाल करने वाली दूसरी सुविधाएं तरीका. नीचे दी गई दो कुंजियां शामिल करें:

    • PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL: साइन-इन वर्कफ़्लो शुरू करने वाले बटन पर दिखने वाली स्ट्रिंग. यह स्ट्रिंग उपयोगकर्ता को दिखाई जाती है, इसलिए इसका अनुवाद उपयोगकर्ता के मौजूदा स्थान-भाषा.
    • PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT: एक PendingIntent, जो जब उपयोगकर्ता PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL.

यह कोड स्निपेट दिखाता है कि आपके ऐप्लिकेशन में उपयोगकर्ता के लिए साइन इन करना कैसे ज़रूरी हो सकता है अपना ऐप्लिकेशन इस्तेमाल करने से पहले:

Kotlin

import androidx.media.utils.MediaConstants

val signInIntent = Intent(this, SignInActivity::class.java)
val signInActivityPendingIntent = PendingIntent.getActivity(this, 0,
    signInIntent, 0)
val extras = Bundle().apply {
    putString(
        MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL,
        "Sign in"
    )
    putParcelable(
        MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT,
        signInActivityPendingIntent
    )
}

val playbackState = PlaybackStateCompat.Builder()
        .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f)
        .setErrorMessage(
            PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED,
            "Authentication required"
        )
        .setExtras(extras)
        .build()
mediaSession.setPlaybackState(playbackState)

Java

import androidx.media.utils.MediaConstants;

Intent signInIntent = new Intent(this, SignInActivity.class);
PendingIntent signInActivityPendingIntent = PendingIntent.getActivity(this, 0,
    signInIntent, 0);
Bundle extras = new Bundle();
extras.putString(
    MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL,
    "Sign in");
extras.putParcelable(
    MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT,
    signInActivityPendingIntent);

PlaybackStateCompat playbackState = new PlaybackStateCompat.Builder()
    .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f)
    .setErrorMessage(
            PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED,
            "Authentication required"
    )
    .setExtras(extras)
    .build();
mediaSession.setPlaybackState(playbackState);

उपयोगकर्ता की पुष्टि होने के बाद, PlaybackStateCompat सेट करें STATE_ERROR के अलावा किसी अन्य राज्य में वापस जाएं, इसके बाद, गतिविधि के finish() तरीका.

अपनी साइन-इन गतिविधि लागू करना

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

नीचे दिए गए टूल, साइन-इन करने की प्रोसेस को आसान बनाने में आपकी मदद कर सकते हैं उन उपयोगकर्ताओं के लिए अनुभव जो पहले किसी दूसरे डिवाइस पर साइन इन कर चुके हैं:

  • एक टैप में साइन इन और साइन-अप: अगर आपने पहले ही One Tap चालू किया हुआ है, तो आपके फ़ोन ऐप्लिकेशन जैसे दूसरे डिवाइसों के लिए, Android Automotive OS ऐप्लिकेशन, जिसकी मदद से मौजूदा One Tap का इस्तेमाल किया जा सकता है.
  • Google साइन इन: अगर आपने Google साइन इन को पहले ही लागू कर लिया है अन्य डिवाइसों के लिए, जैसे कि आपका फ़ोन ऐप्लिकेशन. मौजूदा 'Google साइन इन' का इस्तेमाल करने के लिए, अपने Android Automotive OS ऐप्लिकेशन में साइन इन करें उपयोगकर्ता.
  • Google की मदद से, जानकारी अपने-आप भरने की सुविधा:अगर उपयोगकर्ताओं ने Google की मदद से, जानकारी अपने-आप भरने की सुविधा चालू की है उसके क्रेडेंशियल, Google Password Manager में सेव हो जाते हैं. जब वे उपयोगकर्ता आपके Android Automotive OS ऐप्लिकेशन में साइन इन करते हैं, तो Google, सेव किए गए काम के क्रेडेंशियल का सुझाव देता है. Google की मदद से, जानकारी अपने-आप भरने की सुविधा का इस्तेमाल करने के लिए इसमें ऐप्लिकेशन डेवलप करने की कोई कोशिश नहीं होती. हालांकि, ऐप्लिकेशन डेवलपर बेहतर गुणवत्ता वाले परिणामों के लिए अपने ऐप्लिकेशन ऑप्टिमाइज़ कर सकते हैं. Google की मदद से, जानकारी अपने-आप भरने की सुविधा, Android 8.0 वाले सभी डिवाइसों पर काम करती है (एपीआई लेवल 26) या इसके बाद का वर्शन. इसमें Android Automotive OS भी शामिल है.

Account Manager का इस्तेमाल करें

पुष्टि करने वाले Android Automotive OS वाले ऐप्लिकेशन का इस्तेमाल करना ज़रूरी है Account Manager पर इसकी ये वजहें हो सकती हैं:

  • बेहतर उपयोगकर्ता अनुभव और खाते को मैनेज करना आसान: उपयोगकर्ता आसानी से सभी सिस्टम सेटिंग में मौजूद खाता मेन्यू से अपने खाते बनाना, जिसमें साइन-इन करना भी शामिल है और साइन-आउट करें.
  • "मेहमान" अनुभव: कारें शेयर किए गए डिवाइस हैं. इसका मतलब है कि OEM इस सुविधा को चालू कर सकते हैं "मेहमान" वाहन में अनुभव, जहां खाते जोड़े नहीं जा सकते. यह DISALLOW_MODIFY_ACCOUNTS का इस्तेमाल करके, पाबंदी लगाई गई है AccountManager के लिए.

अनुमतियां

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

मीडिया होस्ट के संकेत पढ़ें

इससे कनेक्ट होने वाले सिस्टम ऐप्लिकेशन (उसके वर्शन सहित) पर निर्भर करते हुए तो आपकी मीडिया ब्राउज़र सेवा, आपके ऐप्लिकेशन को निम्न अतिरिक्त चीज़ें प्राप्त हो सकती हैं:

गड़बड़ी ठीक करना

Android Automotive OS पर मीडिया ऐप्लिकेशन में गड़बड़ियां, मीडिया के ज़रिए ज़ाहिर की जाती हैं सेशन का PlaybackStateCompat. सभी गड़बड़ियों के लिए, सही गड़बड़ी सेट करें PlaybackStateCompat में कोड और गड़बड़ी का मैसेज. इससे Toast दिखता है डालें.

जब कोई गड़बड़ी होती है, लेकिन वीडियो चलना जारी रहता है, तो गैर-घातक जारी करें गड़बड़ी ठीक करें. उदाहरण के लिए, उपयोगकर्ता किसी ऐप्लिकेशन में साइन इन करने से पहले उसमें संगीत चला सकता है, लेकिन गाने को स्किप करने से पहले उन्हें साइन इन करना होगा. जब किसी ऐसी गड़बड़ी का इस्तेमाल किया जाता है जो गंभीर नहीं है, तो सिस्टम सुझाव दे सकता है कि उपयोगकर्ता मौजूदा मीडिया आइटम.

कोई साधारण गड़बड़ी जारी करने पर, अपनी बाकी जानकारी को सुरक्षित रखें गड़बड़ी के कोड और गड़बड़ी के मैसेज के अलावा, PlaybackStateCompat जैसा है. इसका इस्तेमाल करके अप्रोच का इस्तेमाल करके, मौजूदा मीडिया आइटम को चलाया जा सकता है, लेकिन उपयोगकर्ता उस दौरान तय करता है कि साइन इन करना है या नहीं.

जब वीडियो न चलाया जा सके, जैसे कि जब इंटरनेट कनेक्शन न हो और कोई ऑफ़लाइन सामग्री नहीं, PlaybackStateCompat स्थिति को STATE_ERROR पर सेट करें.

अपने PlaybackStateCompat में बाद के अपडेट करने पर, सभी गड़बड़ी कोड हटाएं ताकि एक ही गड़बड़ी की कई चेतावनियां न दिखें.

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

कार्रवाई करने लायक गड़बड़ियां

अगर कोई गड़बड़ी कार्रवाई की जा सकती है, तो नीचे दी गई दो अतिरिक्त चीज़ों को PlaybackStateCompat:

  • PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL: गड़बड़ी को ठीक करने के लिए, क्लिक किए जाने वाले बटन के लिए लेबल. क्योंकि यह स्ट्रिंग और उसे उपयोगकर्ता की मौजूदा स्थान-भाषा के हिसाब से लोकलाइज़ करें.
  • PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT: वह PendingIntent जिससे गड़बड़ी को ठीक करने के लिए बटन चलाया जाता है, जैसे कि अपनी साइन-इन गतिविधि लॉन्च करके.

कार्रवाई की जा सकने वाली गड़बड़ियां, Dialog के तौर पर दिखती हैं. उपयोगकर्ता इन गड़बड़ियों को सिर्फ़ तब ठीक कर सकते हैं, जब कार को रोका गया.

गड़बड़ी के मामलों की जांच करना

पुष्टि करें कि आपका ऐप्लिकेशन सभी स्थितियों में गड़बड़ियों को अच्छी तरह हैंडल करता है. इनमें ये शामिल हैं:

  • आपके प्रॉडक्ट के अलग-अलग टीयर: उदाहरण के लिए, मुफ़्त बनाम प्रीमियम या साइन इन साइन आउट करने की तुलना में अंतर
  • डिस्क की अलग-अलग स्थितियां: उदाहरण के लिए, पार्क किया गया बनाम ड्राइविंग
  • कनेक्टिविटी की अलग-अलग स्थितियां: उदाहरण के लिए, ऑनलाइन बनाम ऑफ़लाइन

दूसरी ज़रूरी बातें

Android Automotive तैयार करते समय, इन दूसरी बातों को ध्यान में रखें ओएस ऐप्लिकेशन:

ऑफ़लाइन कॉन्टेंट

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

जब आप ऑफ़लाइन सहायता पाने के बारे में सोचें, तो इन बातों का ध्यान रखें रणनीति:

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

वेबव्यू से जुड़ी सहायता

वेबव्यू Android Automotive OS में काम करते हैं, लेकिन सिर्फ़ इनके लिए काम करते हैं सेटिंग और साइन-इन गतिविधियों को ट्रैक करें. वेबव्यू का इस्तेमाल करने वाली गतिविधियों में "बंद करो" या "वापस जाएं" खर्च को वेबव्यू से बाहर रखा जा सकता है.

यहां वेबव्यू के लिए, उचित इस्तेमाल के कुछ उदाहरण दिए गए हैं:

  • अपनी निजता नीति, सेवा की शर्तों या कानून से जुड़े दूसरे लिंक दिखाना सेटिंग गतिविधि में.
  • आपकी साइन-इन गतिविधि में वेब पर आधारित फ़्लो.

वेबव्यू का इस्तेमाल करते समय JavaScript.

अपना वेबव्यू सुरक्षित करें

यह पक्का करने के लिए सभी सावधानियां बरतें कि आपका वेबव्यू का इस्तेमाल करने के लिए प्रोत्साहित भी करते हैं. यहां दिया गया कोड स्निपेट देखें. में उपयोग किए गए URL पर वेबव्यू को लॉक करने का उदाहरण loadUrl() कॉल करें और रीडायरेक्ट रोकें. हमारा सुझाव है कि आप सुरक्षा के उपाय लागू करें जैसे संभव हो. उदाहरण के लिए, जब वे कानून से जुड़े लिंक हों.

Kotlin

override fun shouldOverrideUrlLoading(webView: WebView,
                             webResourceRequest: WebResourceRequest): Boolean {
  val originalUri: Uri = Uri.parse(webView.originalUrl)
  // Check for allowed URLs
  if (originalUri.equals(Uri.parse(BLANK_URL))
      || originalUri.equals(webResourceRequest.url)) {
    return false
  }
  if (webResourceRequest.isRedirect) {
    logger.w("Redirect detected, not following")
    return true
  }
  setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.url)
  logger.w(
    String.format(
      "Navigation prevented to %s original is %s", webResourceRequest.url, originalUri))
  return true
}

Java

@Override
public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) {
  Uri originalUri = Uri.parse(webView.getOriginalUrl());
  // Check for allowed URLs
  if (originalUri.equals(Uri.parse(BLANK_URL))
      || originalUri.equals(webResourceRequest.getUrl())) {
    return false;
  }
  if (webResourceRequest.isRedirect()) {
    logger.w("Redirect detected, not following");
    return true;
  }
  setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.getUrl());
  logger.w(
      String.format(
          "Navigation prevented to %s original is %s", webResourceRequest.getUrl(), originalUri));
  return true;
}

पैकेज के नाम

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

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

नीचे दी गई टेबल में, मौजूदा पैकेज नाम और नए पैकेज नाम का उपयोग करके:

सुविधा पैकेज का एक जैसा नाम नए पैकेज का नाम
स्टोर पेज सिंगल एक से ज़्यादा
डुप्लीकेट इंस्टॉल हां: सेटअप विज़र्ड के दौरान “ऐप्लिकेशन को तेज़ी से फिर से इंस्टॉल करना” नहीं
Play Store पर समीक्षा की प्रक्रिया समीक्षाओं को ब्लॉक करना: अगर किसी एक APK की समीक्षा नहीं हो पाती है, तो दूसरे APK जिस रिलीज़ में सबमिट किए गए हैं उसे ब्लॉक कर दिया जाता है किसी व्यक्ति की समीक्षाएं
आंकड़े, मेट्रिक, और अहम जानकारी मिला-जुला डेटा: वाहन संबंधित डेटा को फ़िल्टर करने की सुविधा उपलब्ध है. अलग करें
इंडेक्स करना और खोज के नतीजों की रैंकिंग मौजूदा स्थिति से बाहर निकलें कोई केबिन बैगेज नहीं
अन्य ऐप्लिकेशन के साथ इंटिग्रेट करना शायद किसी बदलाव की ज़रूरत नहीं है, क्योंकि मीडिया कोड को दोनों APK के बीच शेयर किया गया है शायद आपको इससे जुड़ा ऐप्लिकेशन अपडेट करना पड़े. जैसे, Google Assistant की मदद से यूआरआई प्लेबैक के लिए.

अक्सर पूछे जाने वाले सवाल

इसके बारे में अक्सर पूछे जाने वाले कुछ सवालों के जवाब पाने के लिए, नीचे दिए गए सेक्शन देखें Android Automotive OS.

हार्डवेयर

क्या मेरे ऐप्लिकेशन को माइक्रोफ़ोन का ऐक्सेस मिल सकता है

Android 10 (एपीआई लेवल 29) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, शेयर करना ऑडियो इनपुट दस्तावेज़. यह नहीं है ये एपीआई लेवल 29 से पहले तक इस्तेमाल किए जा सकते हैं.

हमें कार के किन एपीआई का ऐक्सेस मिल सकता है और कैसे?

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

ऐप्लिकेशन SetProperty() का इस्तेमाल करके, कार के एपीआई को ऐक्सेस कर सकते हैं और GetProperty() CarPropertyManager में देखें. सोर्स कोड देखें या रेफ़रंस दस्तावेज़ का इस्तेमाल करके, सभी उपलब्ध प्रॉपर्टी की सूची देखें. अगर प्रॉपर्टी के लिए एनोटेट किया गया है @SystemApi के साथ, यह पहले से लोड किए गए सिस्टम ऐप्लिकेशन तक सीमित है.

किस तरह के ऑडियो कोडेक इस्तेमाल किए जा सकते हैं?

ऑडियो कोडेक की जानकारी देखें Android CDD में बदल जाएंगे.

क्या Widevine डीआरएम काम करता है?

हां. वाइडवाइन डीआरएम समर्थित है.

डेवलपमेंट और टेस्टिंग

क्या तीसरे पक्ष के SDK टूल और लाइब्रेरी इस्तेमाल करने पर कोई पाबंदी या सुझाव है?

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

क्या फ़ोरग्राउंड सेवा का इस्तेमाल किया जा सकता है?

फ़ोरग्राउंड सेवा के लिए, इस्तेमाल का सिर्फ़ यही एक उदाहरण है: ऑफ़लाइन इस्तेमाल के लिए. अगर आपके पास फ़ोरग्राउंड सेवा के लिए इस्तेमाल का कोई अन्य उदाहरण है अगर आपको इस बारे में कोई मदद चाहिए, तो Android Automotive OS' का इस्तेमाल करके हमसे संपर्क करें चर्चा समूह शामिल है.

Android Automotive OS वाले ऐप्लिकेशन पब्लिश किए जा रहे हैं

मैं Google Play Console का इस्तेमाल करके, Android Automotive OS ऐप्लिकेशन को कैसे पब्लिश करूं?

ऐप्लिकेशन पब्लिश करने की प्रोसेस, फ़ोन ऐप्लिकेशन को पब्लिश करने जैसी ही है. हालांकि, डिवाइस का नाप या आकार अलग होता है. Android Automotive इस्तेमाल करने के लिए, अपने ऐप्लिकेशन में ऑप्ट इन करें ओएस का नाप या आकार, यह तरीका अपनाएं:

  1. Play Console खोलें.
  2. अपना ऐप्लिकेशन चुनें.
  3. बाएं मेन्यू में, रिलीज़ > पर क्लिक करें सेटअप > बेहतर सेटिंग > डिवाइस का नाप या आकार.
  4. डिवाइस का नाप या आकार जोड़ें > पर क्लिक करें Android Automotive OS पर जाएं. इसके बाद, Play Console में दिए गए निर्देशों का पालन करें.

अन्य संसाधन

Android Automotive OS के बारे में ज़्यादा जानने के लिए, यहां दी गई अतिरिक्त जानकारी देखें संसाधन.

सैंपल

गाइड

ब्लॉग

वीडियो

Android Automotive OS मीडिया से जुड़ी समस्या की शिकायत करें

अगर Android Automotive के लिए मीडिया ऐप्लिकेशन बनाते समय कोई समस्या आती है तो आप Google समस्या को ट्रैक करने वाला टूल. समस्या वाले टेंप्लेट में मांगी गई पूरी जानकारी भरना न भूलें.

नई समस्या जोड़ें

नई समस्या दर्ज करने से पहले, देख लें कि क्या समस्याओं में उसकी शिकायत पहले से की गई है सूची. आप इसमें मौजूद समस्या के लिए स्टार पर क्लिक करके सदस्यता ले सकते हैं और समस्याओं के लिए वोट कर सकते हैं का पता लगाने के लिए किया जा सकता है. ज़्यादा जानकारी के लिए, यह देखें किसी समस्या के लिए सदस्यता लेना.