ऑडियो कॉन्फ़िगरेशन AAOS फ़्लैग

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

चिह्नित करें मकसद
audioUseDynamicRouting कार सेवा की कॉन्फ़िगरेशन फ़ाइल में, इसे AAOS रूटिंग की सुविधा चालू करने के लिए तय किया गया है. config को true पर सेट किया जाना चाहिए. जब false, रूटिंग, और CarAudioService का ज़्यादातर हिस्सा बंद हो जाता है, तो ऑपरेटिंग सिस्टम, ऑडियो नीतियों को कॉन्फ़िगर करना में बताए गए डिफ़ॉल्ट तरीके पर वापस आ जाता है.
audioUseCarVolumeGroupMuting कार की सेवा की कॉन्फ़िगरेशन फ़ाइल में तय किया गया है, ताकि अलग-अलग आवाज़ के ग्रुप को म्यूट किया जा सके. false (डिफ़ॉल्ट वैल्यू) पर सेट होने पर, अलग-अलग वॉल्यूम ग्रुप को म्यूट करने की सुविधा बंद हो जाती है. इसके बजाय, म्यूट करने पर, सभी कॉल को म्यूट करने की सुविधा चालू हो जाती है. true पर सेट करने पर, कार के वॉल्यूम ग्रुप को म्यूट करने की सुविधा चालू हो जाती है. साथ ही, हर वॉल्यूम ग्रुप को अलग से म्यूट किया जा सकता है. true होने पर, ऑडियो कंट्रोल एचएएल में वॉल्यूम ग्रुप को म्यूट करने की सुविधा लागू की जानी चाहिए.
audioUseHalDuckingSignals कार सेवा कॉन्फ़िगरेशन फ़ाइल में तय किया गया है, ताकि IAudioControl#onDevicesToDuckChange एपीआई को चालू किया जा सके. इससे एपीआई, एचएएल को यह बता पाएगा कि कब डक करना है. true (डिफ़ॉल्ट वैल्यू) होने पर, एपीआई को सिग्नल मिलते हैं. इनसे यह पता चलता है कि किन आउटपुट डिवाइसों को डक करना है और किन इस्तेमालों पर फ़ोकस रखना है. जब false, तो एपीआई को कॉल नहीं किया जाता. जब तक Audio Control HAL डकिंग लागू नहीं करता, तब तक एपीआई को कॉल नहीं किया जाता.
config_oemCarService कार की सेवा की कॉन्फ़िगरेशन फ़ाइल में बताया गया है. यह OEM की पसंद के मुताबिक बनाने की सेवा के लिए कॉम्पोनेंट का नाम है. OEM, इस सेवा को लागू करने का विकल्प चुन सकते हैं, ताकि वे अलग-अलग नीतियों के लिए, कार की सेवा से जुड़ी कार्रवाइयों को पसंद के मुताबिक बना सकें. अगर OEM इस कॉम्पोनेंट को लागू करने का विकल्प चुनते हैं, तो उन्हें car-lib के ज़रिए एक्सपोज़ की गई OemCarService को बढ़ाने के लिए एक सेवा लागू करनी होगी. इसके बाद, ज़रूरी कॉम्पोनेंट सेवाओं को लागू करना होगा. खास तौर पर, कार की ऑडियो सेवा के लिए, OEMs ऑडियो ऐक्शन को मैनेज करने के लिए, ऑडियो की किसी भी सब-सेवा को लागू कर सकते हैं. ज़्यादा जानकारी के लिए, कार ऑडियो प्लग इन सेवा देखें. अगर कॉम्पोनेंट का नाम अमान्य है, तो CarService किसी भी OEM सेवा से कनेक्ट नहीं होगा. कॉम्पोनेंट का नाम, तीसरे पक्ष का पैकेज नहीं हो सकता. यह ऐप्लिकेशन पहले से ही इंस्टॉल होना चाहिए.
audioVolumeAdjustmentContextsVersion

कार सेवा कॉन्फ़िगरेशन फ़ाइल में तय किया गया, वॉल्यूम अडजस्टमेंट कॉन्टेक्स्ट की प्राथमिकता सूची का वर्शन चुनने के लिए कॉन्फ़िगरेशन.

पहले वर्शन में, ऑडियो के सभी कॉन्टेक्स्ट इस क्रम में शामिल होते हैं:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

वर्शन 2, इन कॉन्टेक्स्ट तक ही सीमित है.

डिफ़ॉल्ट वर्शन 1 है.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState कार सेवा कॉन्फ़िगरेशन फ़ाइल में तय किया गया, ग्लोबल तौर पर म्यूट करने की स्थिति को बनाए रखने के लिए कॉन्फ़िगरेशन. true (डिफ़ॉल्ट वैल्यू) होने पर, Android डिवाइस को बूट करने पर, ग्लोबल म्यूट की स्थिति को वापस लाता है. जब audioUseCarVolumeGroupMuting की वैल्यू true हो, तो म्यूट करने के उन बदलावों पर इसका कोई असर नहीं पड़ता जो लागू हैं. ऐसा इसलिए, क्योंकि म्यूट करने के बदलाव, वॉल्यूम के अलग-अलग ग्रुप पर आधारित होते हैं. इसकी डिफ़ॉल्ट वैल्यू true पर सेट होती है. अगर किसी डिवाइस के लिए, मास्टरम्यूट की सुविधा को सेव नहीं करना है, तो इस वैल्यू को बदलना होगा.
audioVolumeKeyEventTimeoutMs

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

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

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

audioUseCarVolumeGroupEvent कार सेवा कॉन्फ़िगरेशन फ़ाइल में तय किया गया, वॉल्यूम ग्रुप के लिए कॉलबैक इवेंट चालू करने के लिए कॉन्फ़िगरेशन. जब true, क्लाइंट को ICarVolumeGroupEvent के ज़रिए कॉलबैक मिलता है, तो यह उन इवेंट के लिए होता है जिनका वॉल्यूम ग्रुप पर असर पड़ता है. चालू होने पर:

  • हमारा सुझाव है कि वेंडर, इवेंट और ऑडियो हार्डवेयर में होने वाले बदलावों के लिए, IAudioControl#setModuleChangeCallback और IAudioControl#registerGainCallback का भी इस्तेमाल करें.
  • जब CarVolumeCallback और CarVolumeGroupEventCallback, दोनों को एक ही ऐप्लिकेशन से रजिस्टर किया गया हो, तो वॉल्यूम ग्रुप इंडेक्स और वॉल्यूम ग्रुप म्यूट कॉलबैक, CarVolumeGroupEventCallback के ज़रिए ही भेजे जाएंगे. इसलिए, हमारा सुझाव है कि सभी ऐप्लिकेशन, नए कॉलबैक इंटरफ़ेस पर माइग्रेट कर लें, ताकि उनकी परफ़ॉर्मेंस में कोई बदलाव न हो.
  • डिफ़ॉल्ट वैल्यू false है. हमारा सुझाव है कि आप इसे true पर सेट करें, क्योंकि लेगसी वॉल्यूम कॉलबैक के साथ काम करने वाले एपीआई अब काम नहीं करते. साथ ही, इन्हें जल्द ही हटा दिया जाएगा.

config_useFixedVolume frameworks/base/core/res/res/values/config.xml में तय की गई है. कार की ऑडियो सेवा को वॉल्यूम कंट्रोल मैनेज करने की अनुमति देने के लिए, इसे true पर सेट करना ज़रूरी है. जब config_useFixedVolume फ़्लैग सेट नहीं होता है या false (डिफ़ॉल्ट वैल्यू) पर सेट होता है, तो ऐप्लिकेशन AudioManager वॉल्यूम मैनेजमेंट एपीआई को कॉल कर सकते हैं और सॉफ़्टवेयर मिक्सर में स्ट्रीम टाइप के हिसाब से वॉल्यूम बदल सकते हैं. ऐसा करना शायद ठीक न हो, क्योंकि इससे दूसरे ऐप्लिकेशन पर असर पड़ सकता है. साथ ही, सॉफ़्टवेयर मिक्सर में आवाज़ कम करने की वजह से, हार्डवेयर एम्प्लफ़ायर पर सिग्नल मिलने पर, उसमें कम अहम बिट उपलब्ध हो सकते हैं. ऐसे नए डिवाइस जिन्हें कॉन्फ़िगर नहीं किया गया है और जो AudioManager आवाज़ और म्यूट एपीआई के ज़रिए, true आवाज़ में बदलाव पाने के लिए सेट हैं.
config_handleVolumeKeysInWindowManager frameworks/base/core/res/res/values/config.xml में तय की गई, इसे true पर सेट करना ज़रूरी है, ताकि कार की ऑडियो सेवा, वॉल्यूम के मुख्य इवेंट को इंटरसेप्ट कर सके. अगर इसे false (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो वॉल्यूम बटन से होने वाले मुख्य इवेंट, फ़ोरग्राउंड ऐप्लिकेशन को भेजे जा सकते हैं. इससे कार की ऑडियो सेवा के बाहर, वॉल्यूम बटन से होने वाले मुख्य इवेंट के मैनेजमेंट से खराब नतीजे मिल सकते हैं.

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

Android 13 से पहले, packages/services/Car/service/res/values/config.xml फ़ाइल के लिए, कार सेवा कॉन्फ़िगरेशन को प्रॉडक्ट कॉन्फ़िगरेशन ओवरले (ज़्यादा जानने के लिए, संसाधन ओवरले की मदद से बिल्ड को पसंद के मुताबिक बनाना देखें) से बदल दिया जाता था.

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

<path_to_overlay> से लेकर असल जगह तक, कॉन्फ़िगरेशन फ़ाइल की जगह में packages/services/Car/service/res/values/ शामिल होना चाहिए.

कार सर्विस के आरआरओ

Android 13 के बाद, AAOS में रनटाइम रिसॉर्स ओवरले की सुविधा काम करती है. कार के ऑडियो कॉन्फ़िगरेशन की वैल्यू बदलने के लिए, आरआरओ का इस्तेमाल करें. उदाहरण के लिए, device/google/cuttlefish/shared/auto/rro_overlay/ में, वाहन संबंधित cuttlefish रेफ़रंस के लिए आरआरओ देखें. audioUseDynamicRouting कॉन्फ़िगरेशन को device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml में बदल दिया गया है.

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

रिसॉर्स ओवरले मैप, device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml में मौजूद होता है:

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml में बताए गए रिसॉर्स ओवरले मेनिफ़ेस्ट में, targetPackage को com.android.car.updatable के तौर पर सेट किया गया है.

ज़्यादा जानकारी के लिए, ये संसाधन देखें:

सुविधा चालू करने वाला एपीआई

अगर डिवाइस पर यह सुविधा चालू है, तो यह तरीका true दिखाता है. अगर यह सुविधा चालू नहीं है, तो false दिखाता है. CarAudioManager#isAudioFeatureEnabled API में, इस्तेमाल किया गया पैरामीटर इनमें से कोई एक होना चाहिए:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING