मल्टी-ज़ोन ऑडियो रूटिंग

कार ऑडियो की सेवा, मुख्य ऑडियो के लिए डाइनैमिक ऑडियो की नीति का इस्तेमाल करती है, ताकि इसे इस्तेमाल करने में आसानी हो में इस्तेमाल किया जाता है.

  • हर यात्री के लिए अलग-अलग ऑडियो प्लेबैक, जिसे मल्टी-ज़ोन ऑडियो कहा जाता है. जिसमें हर ज़ोन एक साथ चल रही आवाज़ की अनुमति देता है.

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

  • यात्री प्राइमरी ज़ोन का ऑडियो कास्ट कर सकता है.

  • यात्री का ऑडियो मिरर.

इस्तेमाल के हर उदाहरण में, कार की ऑडियो सेवा, इन कामों के लिए डाइनैमिक ऑडियो की नीति का इस्तेमाल करती है तय किए गए आउटपुट डिवाइस पर ऑडियो को अपने-आप रूट कर देगा.

मल्टी-ज़ोन ऑडियो

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

मल्टी-ज़ोन ऑडियो आर्किटेक्चर

कार ऑडियो सर्विस का आर्किटेक्चर

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

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

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

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

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId, कार सर्विस की परिभाषा है और इसे यह मैनेज करता है CarOccupantZoneManager. इसका इस्तेमाल कार में, वहां रहने वाले उपयोगकर्ता के लिए मैपिंग तय करने के लिए किया जाता है कार को किसी तय सीट पर ले जाएं. CarOccupantZoneService यह भी बताता है ऑक्यूपंट ज़ोन से डिसप्ले, अन्य सहायक डिवाइस, और उपयोगकर्ता से मैपिंग उपयोगकर्ता किसी डिसप्ले में लॉग इन करता है. ऑडियो ज़ोन में ये चीज़ें होती हैं:

  • ऑडियो ज़ोन आईडी और ऑक्यूपंट ज़ोन आईडी.

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

    • आवाज़ कम या ज़्यादा किए जाने पर, ग्रुप के सभी ऑडियो डिवाइस उसी तरह.

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

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

मल्टी-ज़ोन ऑडियो पैसेंजर के लॉग इन का वर्कफ़्लो

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

इमेज

दूसरा डायग्राम.

इस क्रम में, उपयोगकर्ता के लॉगिन को ऑक्यूपंट ज़ोन सेवा.

  1. कार ऑडियो सेवा (किसी खास ऑडियो ज़ोन के लिए) उपयोगकर्ता के डिवाइस को हटाने के लिए AudioPolicy#removeUserIdDeviceAffinity एपीआई अफ़िनिटी ऑडियंस (एक जैसी पसंद वाले दर्शक) चुनें. यह एपीआई, यूज़र आईडी लेता है. इस मामले में, पिछले ज़ोन का उपयोगकर्ता.

  2. AudioPolicy#setUserIdDeviceAffinity एपीआई, नए उपयोगकर्ता को ज़ोन, जो किसी चुनिंदा ज़ोन के लिए यूज़र आईडी और सभी डिवाइसों को ऐक्सेस करता है कॉन्फ़िगरेशन.

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

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

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

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

तीसरी इमेज. डाइनैमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो.

इमेज 3 में, डाइनैमिक ज़ोन कॉन्फ़िगरेशन के आर्किटेक्चर को दिखाया गया है इस्तेमाल किया जा सकता है. ऑडियो ज़ोन 1 में दो कॉन्फ़िगरेशन, Config 0 और Config 1 हैं, जो आउटपुट डिवाइस के स्पीकर और हेडरेस्ट से जुड़े होते हैं.

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

नीचे दिया गया कोड स्निपेट इस डाइनैमिक ज़ोन कॉन्फ़िगरेशन का सेटअप दिखाता है.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

ऑडियो कॉन्फ़िगरेशन को मैनेज करने के लिए, कार का ऑडियो मैनेजर कॉन्फ़िगरेशन को मैनेज करने के लिए, एपीआई दिखाता है:

  • किसी ज़ोन के लिए क्वेरी कॉन्फ़िगरेशन उपलब्ध है.
  • फ़िलहाल, क्वेरी में किसी ज़ोन के लिए कॉन्फ़िगरेशन सेट किया गया है.
  • किसी दूसरे कॉन्फ़िगरेशन पर स्विच करें.

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

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

चौथी इमेज. डाइनैमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो.

प्राइमरी ज़ोन वाले यात्री का ऑडियो कास्ट

यात्रियों के लिए ऑडियो कास्ट करने की सुविधा को Android 14 में लॉन्च किया गया है. यात्रियों को अपने मीडिया ऑडियो को प्राइमरी ज़ोन में कास्ट करने की अनुमति दें. इसमें इस तरीके से यात्री का मीडिया ऑडियो मुख्य केबिन में कास्ट किया जा सकता है. ड्राइवर पूरी तरह से कंट्रोल कर सकता है.

नीचे दिए गए डायग्राम में, मुख्य डाइग्नोस्टिक टूल के लिए ज़ोन पैसेंजर मीडिया ऑडियो कास्ट.

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

पांचवी इमेज. डाइनैमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो.

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

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

डिवाइस की इस नई सूची को यात्री को असाइन किया जाता है AudioPolicy#setUserIdDeviceAffinity एपीआई. एपीआई को पास किए गए पैरामीटर ये हैं डिवाइसों की सूची और यात्री यूज़र आईडी. जब ऑडियो सिस्टम का ऑडियो नीति से जुड़ी सेवा से जुड़ी क्वेरी: मीडिया ट्रैक के लिए कौनसा ऑडियो मिक्स चुनना है जो यात्री से जुड़े हों, यानी मुख्य समाचार से जुड़े मीडिया ऑडियो मिक्स से ज़ोन चुना गया है.

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

पैसेंजर ज़ोन का ऑडियो मिरर

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

ऑडियो मिरर रूटिंग

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

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

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

छठी इमेज. डाइनैमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो.

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

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

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

ऑडियो मिरर का वर्कफ़्लो

सातवीं इमेज. ऑडियो मिरर वर्कफ़्लो.

चित्र 7 में, ऑडियो मिररिंग को प्रबंधित करने के लिए कार ऑडियो मैनेजर के API हैं मीडिया सिस्टम सर्विस से कॉल किया गया. खास तौर पर, ऑडियो चालू करने के लिए एपीआई पहले उपयोगकर्ता और दूसरे उपयोगकर्ता के लिए डुप्लीकेट वर्शन बनाने की सुविधा, CarAudioManager#enableMirrorForAudioZones.

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

ऊपर दी गई इमेज में, कार की ऑडियो सेवा देने वाली कंपनी ने mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

कहां हैं,

bus_1000 सोर्स बस है और bus_10 और bus_20 मंज़िल हैं बसें.

अनुक्रम डायग्राम में नहीं दिखाया गया है, जो इसके माध्यम से भेजा गया सिग्नल है AudioManager#setParameters एपीआई, जो ऑडियो के ज़रिए एचएएल तक पहुंचता है सेवा.

ऑडियो मिरर बंद करने पर, यह सिग्नल भेजा जाता है, mirroring_src=bus_1000;mirroring=off. एचएएल इस सिग्नल का इस्तेमाल इन कामों के लिए कर सकता है ऑडियो मिररिंग सक्षम न होने पर ऑडियो डुप्लिकेशन अक्षम करें. ऑडियो तय करने के लिए मिररिंग डिवाइस, कार की ऑडियो कॉन्फ़िगरेशन फ़ाइल में mirroringDevices, जैसा कि नीचे स्निपेट में दिखाया गया है.

इस स्निपेट में, डुप्लीकेट वर्शन बनाने वाले दो डिवाइस तय किए गए हैं, bus_1000 और bus_2000, ताकि चार यात्री ऑडियो मिररिंग का इस्तेमाल कर सकें.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>