खास जानकारी

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

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

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

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

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

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

इमेज

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

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

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

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

भरोसेमंद होने के लिए, बाहरी आवाज़ों (जो अलग-अलग सोर्स से आती हैं, जैसे कि सीटबेल्ट की चेतावनी देने वाली आवाज़ें) को Android के बाहर मैनेज किया जाता है. इन्हें HAL के नीचे या अलग से मौजूद हार्डवेयर में भी मैनेज किया जा सकता है. सिस्टम लागू करने वाले लोगों को एक ऐसा मिक्सर उपलब्ध कराना होगा जो Android से साउंड इनपुट की एक या उससे ज़्यादा स्ट्रीम स्वीकार करता हो. इसके बाद, उन स्ट्रीम को गाड़ी के लिए ज़रूरी बाहरी साउंड सोर्स के साथ सही तरीके से जोड़ता हो. Android कंट्रोल एचएएल, 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 सभी आवाज़ों को एक साथ मिलाकर, एक स्ट्रीम के तौर पर डिलीवर करता है. इसके अलावा, HAL हर CarAudioContext के लिए एक बस पोर्ट उपलब्ध करा सकता है, ताकि किसी भी तरह की आवाज़ को एक साथ डिलीवर किया जा सके. इससे, एचएएल लागू करने पर, अलग-अलग आवाज़ों को अपनी पसंद के मुताबिक मिक्स और डक किया जा सकता है.

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