खास जानकारी

Android Automotive OS (AAOS), Android के मुख्य ऑडियो स्टैक पर आधारित है. इसका मकसद, वाहन में सूचना और मनोरंजन की सुविधा देने वाले डिवाइस के तौर पर काम करने के उदाहरणों को इस्तेमाल करना है. AAOS, मीडिया, नेविगेशन, और कम्यूनिकेशन जैसी जानकारी देने वाली आवाज़ों के लिए ज़िम्मेदार है. हालांकि, यह सीधे तौर पर उन चाइम और चेतावनियों के लिए ज़िम्मेदार नहीं है जिनके लिए उपलब्धता और समय से जुड़ी सख्त शर्तें होती हैं.

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

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

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

Android की आवाज़ें और स्ट्रीम

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

इमेज

पहली इमेज. स्ट्रीम-सेंट्रिक आर्किटेक्चर का डायग्राम.

Android, Android ऐप्लिकेशन से आने वाली आवाज़ों को मैनेज करता है. साथ ही, उन ऐप्लिकेशन को कंट्रोल करता है और आवाज़ के टाइप के आधार पर, उनकी आवाज़ों को एचएएल में आउटपुट डिवाइसों पर भेजता है:

  • लॉजिकल स्ट्रीम, जिन्हें ऑडियो के मुख्य नामकरण में सोर्स कहा जाता है, उन्हें ऑडियो एट्रिब्यूट के साथ टैग किया जाता है.

  • फ़िज़िकल स्ट्रीम, जिन्हें मुख्य ऑडियो नामावली में डिवाइस कहा जाता है. इन स्ट्रीम में, मिक्स होने के बाद संदर्भ से जुड़ी कोई जानकारी नहीं होती.

भरोसेमंद होने के लिए, बाहरी आवाज़ों (जो अलग-अलग सोर्स से आती हैं, जैसे कि सीटबेल्ट की चेतावनी देने वाली घंटी) को Android के बाहर, एचएएल के नीचे या अलग हार्डवेयर में मैनेज किया जाता है. सिस्टम लागू करने वालों को एक ऐसा मिक्सर देना चाहिए जो Android से एक या एक से ज़्यादा साउंड इनपुट स्वीकार करता हो. इसके बाद, इन स्ट्रीम को वाहन के लिए ज़रूरी बाहरी साउंड सोर्स के साथ सही तरीके से जोड़ा जाना चाहिए. Android Control HAL, Android के बाहर जनरेट होने वाली आवाज़ों के लिए एक अलग तरीका उपलब्ध कराता है. इसकी मदद से, Android से वापस संपर्क किया जा सकता है:

  • ऑडियो फ़ोकस का अनुरोध
  • गेन या वॉल्यूम की सीमाएं
  • गेन और वॉल्यूम में बदलाव

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

Android की आवाज़ें

ऐप्लिकेशन में एक या उससे ज़्यादा प्लेयर हो सकते हैं. ये प्लेयर, ऑडियो डेटा की एक या उससे ज़्यादा लॉजिकल स्ट्रीम को दिखाने के लिए, स्टैंडर्ड Android API (उदाहरण के लिए, फ़ोकस कंट्रोल के लिए AudioManager या स्ट्रीमिंग के लिए MediaPlayer) के ज़रिए इंटरैक्ट करते हैं. यह डेटा, सिंगल चैनल मोनो या 7.1 सराउंड हो सकता है. हालांकि, इसे एक ही सोर्स के तौर पर रूट किया जाता है और इस्तेमाल किया जाता है. ऐप्लिकेशन स्ट्रीम, AudioAttributes से जुड़ी होती है. इससे सिस्टम को यह जानकारी मिलती है कि ऑडियो को कैसे दिखाया जाना चाहिए.

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

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

बाहरी स्ट्रीम

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

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

ऐप्लिकेशन को मीडिया के मुख्य इवेंट मैनेज करने की ज़िम्मेदारी भी होती है. जैसे, चलाना और रोकना. ऐसे बाहरी डिवाइसों को कंट्रोल करने के लिए, एक सुझाया गया तरीका HwAudioSource है. ज़्यादा जानने के लिए, AAOS में इनपुट डिवाइस कनेक्ट करना लेख पढ़ें.

आउटपुट डिवाइस

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

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

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