कार का ऑडियो कॉन्फ़िगरेशन

Android 10 में, car_audio_configuration.xml को बदल दिया गया car_volumes_groups.xml और IAudioControl.getBusForContext. ऑडियो से जुड़ी नीति आम तौर पर, वेंडर पार्टीशन में मौजूद फ़ाइलें, ऑडियो हार्डवेयर का प्रतिनिधित्व करती हैं. कॉन्फ़िगरेशन पर नज़र रखें. इसमें रेफ़र किए गए सभी डिवाइस car_audio_configuration.xml इसमें तय होना चाहिए audio_policy_configuration.xml.

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

कार ऑडियो के आर्किटेक्चर की खास जानकारी

पहला डायग्राम. कार ऑडियो के आर्किटेक्चर की खास जानकारी.

कार की ऑडियो कॉन्फ़िगरेशन फ़ाइल को vendor\etc\ में रखें या vendor\etc\ के साथ, डिवाइस पर system\etc\ कार ऑडियो सेवा की ओर से फ़ाइल को सबसे पहले खोजा गया. कार ऑडियो की पहचान करने के लिए, ऑडियो सेवाएं car_audio_configuration.xml को पढ़ती हैं कॉन्फ़िगरेशन.

कार में ऑडियो ज़ोन:

  • हर ऑडियो ज़ोन का एक यूनीक ऑडियो ज़ोन आईडी होता है.
  • हर ऑडियो ज़ोन को ऑक्यूपंट ज़ोन के साथ मैप किया जा सकता है.
  • हर ज़ोन में ऑडियो कार्रवाइयाँ एक-दूसरे से अलग होती हैं:

    • ऑडियो फ़ोकस
    • ऑडियो रूटिंग
    • ऑडियो डकिंग
  • कार वॉल्यूम ग्रुप:

    • वॉल्यूम ग्रुप वाले सभी ऑडियो डिवाइस, एक साथ कंट्रोल किए जाते हैं भी दिखेगा. सभी डिवाइसों के लिए ऑडियो गेन कॉन्फ़िगरेशन एक ही ग्रुप में होना चाहिए.

    • ऑडियो डिवाइसों की मैपिंग के लिए ऑडियो का कॉन्टेक्स्ट. इसका इस्तेमाल करके कोई ऑडियो बनाएं वह एक आउटपुट डिवाइस पर ऑडियो के इस्तेमाल को मैप करता है.

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

ऑडियो कॉन्टेक्स्ट

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

इस टेबल में, ऑडियो कॉन्टेक्स्ट और इस्तेमाल के बीच मैपिंग के बारे में बताया गया है. हाइलाइट किए गए पंक्तियां नए सिस्टम उपयोग के लिए दी जाती हैं.

कारऑडियो कॉन्टेक्स्ट इससे जुड़े एट्रिब्यूट के इस्तेमाल से जुड़ी जानकारी
संगीत UNKNOWN
GAME
MEDIA
नेविगेट करना ASSISTANCE_NAVIGATION_GUIDANCE
VOICE_COMMAND ASSISTANT
ASSISTANCE_ACCESSIBILITY
कॉल करें NOTIFICATION_RINGTONE
कॉल करें VOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
अलार्म ALARM
सूचना NOTIFICATION
NOTIFICATION_*
सिस्टम साउंड ASSISTANCE_SONIFICATION
आपातकालीन आवाज़ों की सूचना EMERGENCY
Safety SAFETY
VEHICLE_STATUS VEHICLE_STATUS
एलान ANNOUNCEMENT

AAOS रूटिंग चालू करें

AAOS पर आधारित रूटिंग का इस्तेमाल करने के लिए, आपको audioUseDynamicRouting फ़्लैग को इस पर सेट करना होगा true:

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
</resources>

जब false, रूटिंग और CarAudioService का ज़्यादातर हिस्सा बंद हो जाता है और AAOS बंद हो जाता है AudioService के डिफ़ॉल्ट व्यवहार पर वापस आ जाएगा.

प्राइमरी ज़ोन

डिफ़ॉल्ट रूप से, सभी ऑडियो को प्राइमरी ज़ोन में भेजा जाता है. सिर्फ़ एक प्राइमरी ज़ोन मौजूद है, जिसे एट्रिब्यूट के ज़रिए कॉन्फ़िगरेशन में दिखाया जाता है isPrimary="true". प्राइमरी ज़ोन अपने-आप असाइन हो जाता है Audiomanager.PRIMARY_AUDIO_ZONE.

सैंपल कॉन्फ़िगरेशन (वर्शन 2)

उदाहरण के लिए, किसी वाहन में दो ज़ोन हो सकते हैं: प्राइमरी ज़ोन और पीछे की सीट मनोरंजन सिस्टम. इस स्थिति में, आप एक संभावित car_audio_configuration.xml वर्शन 2 के बारे में यहां बताया गया है:

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true">
           <volumeGroups>
               <group>
                   <device address="bus0_media_out">
                       <context context="music"/>
                       <context context="announcement"/>
                   </device>
                   <device address="bus3_call_ring_out">
                       <context context="call_ring"/>
                   </device>
                   <device address="bus6_notification_out">
                       <context context="notification"/>
                   </device>
               </group>
               <group>
                   <device address="bus1_navigation_out">
                       <context context="navigation"/>
                   </device>
                   <device address="bus2_voice_command_out">
                       <context context="voice_command"/>
                   </device>
               </group>
               <group>
                   <device address="bus4_call_out">
                       <context context="call"/>
                   </device>
               </group>
               <group>
                   <device address="bus5_alarm_out">
                       <context context="alarm"/>
                   </device>
               </group>
               <group>
                   <device address="bus7_system_sound_out">
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                   </device>
               </group>
           </volumeGroups>
       </zone>
        <zone name="rear seat zone" audioZoneId="1">
           <volumeGroups>
               <group>
                   <device address="bus100_rear_seat">
                       <context context="music"/>
                       <context context="navigation"/>
                       <context context="voice_command"/>
                       <context context="call_ring"/>
                       <context context="call"/>
                       <context context="alarm"/>
                       <context context="notification"/>
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                       <context context="announcement"/>
                   </device>
               </group>
           </volumeGroups>
    </zones>
</audioZoneConfiguration>

इस उदाहरण में, प्राइमरी ज़ोन कुछ ऑडियो कॉन्टेक्स्ट को अलग-अलग डिवाइस पर. इससे एचएएल को अलग-अलग पोस्ट-प्रोसेसिंग लागू करने में मदद मिलती है इफ़ेक्ट को मिलाकर, गाड़ी के हार्डवेयर का इस्तेमाल करके हर डिवाइस पर आउटपुट को मिलाना. इन डिवाइसों को कई वॉल्यूम ग्रुप में व्यवस्थित किया गया है: मीडिया, नेविगेशन, कॉल, अलार्म और सिस्टम की आवाज़. अगर सिस्टम को useFixedVolume, इसके बाद हर ग्रुप के लिए आवाज़ के लेवल, HAL को भेज दिए जाते हैं इन डिवाइसों के आउटपुट पर लागू करने के लिए.

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

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

ऑक्यूपंट ज़ोन का ऑडियो कॉन्फ़िगरेशन

Android 11 में, car_audio_configuration.xml को लॉन्च किया गया दो नए फ़ील्ड, audioZoneId और occupantZoneId. audioZoneId का इस्तेमाल किया जा सकता है ऑडियो ज़ोन मैनेजमेंट को कंट्रोल करने के लिए. कॉन्फ़िगर करने के लिए, occupantZoneId का इस्तेमाल किया जा सकता है रूटिंग, यूज़र आईडी के आधार पर तय होती है.

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

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true" occupantZoneId="0">
         ...
       </zone>
       <zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
         ...
       </zone>
    </zones>
</audioZoneConfiguration>

ऊपर दिए गए कॉन्फ़िगरेशन में, प्राइमरी ज़ोन से ऑक्यूपंट ज़ोन 0 को मैप करने के बारे में बताया गया है और audioZoneId 1 से occupantZoneId 1 तक. सामान्य रूप से, इनके बीच किसी भी मैपिंग ऑक्यूपंट ज़ोन और ऑडियो ज़ोन कॉन्फ़िगर किए जा सकते हैं. हालांकि, मैपिंग वन-टू-वन. दो नए फ़ील्ड को तय करने वाले नियमों की सूची नीचे दी गई है.

  • प्राइमरी ज़ोन के लिए audioZoneId, हमेशा PRIMARY_AUDIO_ZONE आईडी होता है. अगर आपने isPrimary="true" तय किया गया है, तो audioZoneId की ज़रूरत नहीं है.

  • audioZoneId और occupantZoneId नंबर दोहराया नहीं जा सकता.

  • audioZoneId और occupantZoneId में सिर्फ़ वन-टू-वन मैपिंग हो सकती है.

Android 14 वाली कार का ऑडियो कॉन्फ़िगरेशन

Android 14 में, AAOS ने OEM प्लगिन सेवा लॉन्च की. इसकी मदद से, कार की आवाज़ को ज़्यादा असरदार तरीके से मैनेज किया जा सकता है ऑडियो सेवा. नई प्लगिन सेवाओं के साथ-साथ, ये बदलाव किए गए हैं कार ऑडियो कॉन्फ़िगरेशन फ़ाइल में जोड़ा गया:

  • OEM की ओर से तय की गई कार का ऑडियो कॉन्टेक्स्ट
  • नॉन-प्राइमरी ज़ोन के डाइनैमिक कॉन्फ़िगरेशन

OEM की ओर से तय की गई कार का ऑडियो कॉन्टेक्स्ट

Android डिवाइस में, ज़रूरत के हिसाब से ऑडियो कॉन्फ़िगर करने की सुविधा चालू करने के लिए 14, कार ऑडियो सेवा के लिए अनुमति देती है कि अलग-अलग ग्रुप में बांटा गया है, जो ऊपर बताए गए स्टैटिक ऑडियो कॉन्टेक्स्ट से अलग है. OEM के तय किए गए इस कॉन्टेक्स्ट के बारे में car_audio_configuration.xml में बताया जा सकता है वर्शन 3 फ़ाइल का उपयोग करके रखा जाता है.

इसके बजाय, मौजूदा समय में तय किए गए स्टैटिक ऑडियो कॉन्टेक्स्ट का इस्तेमाल किया जाता है. सामान्य OEM-तय कार के ऑडियो कॉन्टेक्स्ट का फ़ॉर्मैट नीचे दिया गया है.

हर OEM कॉन्टेक्स्ट के लिए, ऑडियो एट्रिब्यूट की सूची के साथ-साथ name की ज़रूरत होती है कॉन्टेक्स्ट के हिसाब से असाइन किया गया इस्तेमाल. ऊपर दिए गए उदाहरण में, दो कॉन्टेक्स्ट हैं परिभाषित:

<carAudioConfiguration version="3">
    <oemContexts>
        <oemContext name="media">
            <audioAttributes>
                <usage value="AUDIO_USAGE_MEDIA" />
    <usage value="AUDIO_USAGE_UNKNOWN"/>
            </audioAttributes>
        </oemContext>
        <oemContext name="game">
            <audioAttributes>
                <usage value="AUDIO_USAGE_GAME" />
            </audioAttributes>
        </oemContext>
...
  • media संदर्भ में AUDIO_USAGE_MEDIA और AUDIO_USAGE_UNKNOWN शामिल हैं
  • game संदर्भ में सिर्फ़ AUDIO_USAGE_GAME शामिल है

संदर्भ, car_audio_configuration.xml के सबसे ऊपर बताया जाना चाहिए फ़ाइल से लिए जाते हैं. OEM कॉन्टेक्स्ट तय होने पर, कार के बाकी ऑडियो कॉन्फ़िगरेशन पहले की तरह आगे बढ़ सकते हैं. नीचे दिए गए नियम, कार के ऑडियो के कॉन्टेक्स्ट पर लागू होते हैं:

  • OEM संदर्भ की परिभाषाएं ज़रूरी नहीं होती हैं. स्टैटिक ऑडियो कॉन्टेक्स्ट यह है का इस्तेमाल किया गया है.

  • कॉन्टेक्स्ट के नाम न दोहराएं.

  • एक से ज़्यादा कॉन्टेक्स्ट के लिए, ऑडियो एट्रिब्यूट का इस्तेमाल असाइन न करें.

  • AudioAttributes में बताए गए सभी ऑडियो इस्तेमाल का इस्तेमाल, इन्हें बनाने में किया जाना चाहिए संदर्भ के बारे में बताएं.

साफ़ तौर पर कहा जाए, तो android.audio.policy.configuration.V7_0.AudioUsage OEM ऑडियो के कॉन्टेक्स्ट के लिए, ऑडियो के इस्तेमाल की स्ट्रिंग दिखाना ज़रूरी है परिभाषा शामिल नहीं है. आने वाले समय में, ऑडियो एट्रिब्यूट के नए इस्तेमाल किसी एक Android से माइग्रेट करते समय गड़बड़ी को कम करने का सबसे सही संदर्भ एक से दूसरे वर्शन का इस्तेमाल करें.

OEM प्लगिन का दायरा बढ़ाने के लिए, OEM तय किए गए कॉन्टेक्स्ट का इस्तेमाल किया गया ऑडियो सेवा के अलावा, इसे अब भी OEM प्लगिन सेवा के बिना इस्तेमाल किया जा सकता है. ऑडियो व्यवहार, स्टैटिक ऑडियो सेवा के जैसा होता है:

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

  • ऑडियो की आवाज़ कंट्रोल करने वाले ऑडियो एट्रिब्यूट का इस्तेमाल, सबसे सही मैचिंग के लिए किया जाता है:

    • OEM के तय किए गए कॉन्टेक्स्ट पर आधारित वॉल्यूम ग्रुप.
    • स्टैटिक वॉल्यूम की सूची से प्राथमिकता कॉन्फ़िगर की गई.
  • ऑडियो डकिंग का व्यवहार:

    • मौजूदा ऑडियो फ़ोकस के लिए ऑडियो एट्रिब्यूट के इस्तेमाल का इस्तेमाल, कार के ऑडियो कॉन्फ़िगरेशन में बताए गए ऑडियो डिवाइस की जानकारी देता है फ़ाइल से लिए जाते हैं.

    • ऑडियो एट्रिब्यूट का इस्तेमाल, उससे जुड़े स्टैटिक कॉन्टेक्स्ट को डक से मैप करने के लिए किया जाता है, के आधार पर तैयार किया गया है.

डाइनैमिक ऑडियो ज़ोन के कॉन्फ़िगरेशन

Android 14 में, डाइनैमिक ऑडियो ज़ोन के लिए कॉन्फ़िगरेशन है, तो ऑडियो ज़ोन परिभाषित करने के लिए कार ऑडियो कॉन्फ़िगरेशन स्कीमा है इसे वर्शन 3 में अपडेट किया गया है. नए स्कीमा के लिए कॉन्फ़िगरेशन सेट अप करना ज़रूरी है हर ज़ोन के लिए.

<carAudioConfiguration version="3">
    <!-- optional OEM context -->
    <oemContexts>
      <oemContext name="media">
        <audioAttributes>
          <usage value="AUDIO_USAGE_MEDIA" />
          <usage value="AUDIO_USAGE_UNKNOWN"/>
        </audioAttributes>
      </oemContext>
      <oemContext name="game">
        <audioAttributes>
          <usage value="AUDIO_USAGE_GAME" />
        </audioAttributes>
      </oemContext>
...
    </oemContexts>
  <zones>
    <zone name="primary zone" isPrimary="true" occupantZoneId="0">
      <zoneConfigs>
        <zoneConfig name="primary zone config 0" isDefault="true">
          <volumeGroups>
            <group>
              <device address="bus0_media_out">
                <context context="media"/>
            <context context="game"/>
                <context context="announcement"/>
              </device>
              <device address="bus6_notification_out">
                <context context="notification"/>
              </device>
            </group>
  ...
      </zoneConfigs>
    </zone
  </zones>

ज़्यादा जानने के लिए, device/generic/car/emulator/audio/car_audio_configuration.xml. इतने समय में शुरू होगा Android 14. प्राइमरी ज़ोन में सिर्फ़ एक (1) हो सकता है कॉन्फ़िगरेशन. नॉन-प्राइमरी ज़ोन के लिए कई कॉन्फ़िगरेशन हो सकते हैं. नीचे दिए गए ये नियम, कार के ऑडियो कॉन्फ़िगरेशन पर लागू होते हैं:

  • मुख्य ऑडियो ज़ोन में सिर्फ़ एक कॉन्फ़िगरेशन हो सकता है.

  • नॉन-प्राइमरी ऑडियो ज़ोन में कई कॉन्फ़िगरेशन हो सकते हैं.

  • हर ऑडियो ज़ोन और ऑडियो ज़ोन के कॉन्फ़िगरेशन के लिए नाम यूनीक होना चाहिए.

  • ऑडियो ज़ोन में, ऑडियो कॉन्फ़िगरेशन अलग-अलग हो सकते हैं:

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

  • एक ही वॉल्यूम ग्रुप से जुड़े ऑडियो डिवाइसों में एक ही ऑडियो होना चाहिए कॉन्फ़िगरेशन मिलता है.

  • हर ऑडियो के लिए सभी ऑडियो कॉन्टेक्स्ट (OEM या स्टैटिक) असाइन किए जाने चाहिए कॉन्फ़िगरेशन.

फ़ॉरवर्ड करने की सुविधा

हालांकि, car_audio_configuration.xml के नए वर्शन में सुविधाओं के नए वर्शन में, आप अब भी पुरानी फ़ाइलों का इस्तेमाल एएओएस. Android के नए वर्शन पर अपडेट करने वाले OEMs, car_audio_configuration.xml फ़ाइल.

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