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

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

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

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

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

  • 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 मिलीसेकंड होती है. ओईएम को इसे उपयोगकर्ता अनुभव के हिसाब से अडजस्ट करना चाहिए.

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

config_useFixedVolume frameworks/base/core/res/res/values/config.xml में तय किया गया है. इसे true पर सेट किया जाना चाहिए, ताकि कार में मौजूद ऑडियो सिस्टम को वॉल्यूम कंट्रोल करने की अनुमति दी जा सके. अगर config_useFixedVolume फ़्लैग सेट नहीं है या false (डिफ़ॉल्ट वैल्यू) पर सेट है, तो ऐप्लिकेशन AudioManager वॉल्यूम मैनेजमेंट एपीआई को कॉल कर सकते हैं. साथ ही, सॉफ़्टवेयर मिक्सर में स्ट्रीम टाइप के हिसाब से वॉल्यूम बदल सकते हैं. ऐसा करना सही नहीं है, क्योंकि इससे दूसरे ऐप्लिकेशन पर असर पड़ सकता है. साथ ही, सॉफ़्टवेयर मिक्सर में आवाज़ कम करने से, हार्डवेयर ऐम्प्लीफ़ायर पर सिग्नल मिलने पर, कम बिट उपलब्ध हो सकती हैं. ऐसे नए डिवाइस जिन्हें कॉन्फ़िगर नहीं किया गया है और जिन्हें true आवाज़ कम या ज़्यादा करने की सुविधा के लिए सेट किया गया है. ये डिवाइस, true आवाज़ कम या ज़्यादा करने और म्यूट करने वाले एपीआई के ज़रिए काम करते हैं.AudioManager
config_handleVolumeKeysInWindowManager frameworks/base/core/res/res/values/config.xml में तय किया गया है. कार में ऑडियो सेवा को वॉल्यूम बटन के इवेंट इंटरसेप्ट करने की अनुमति देने के लिए, इसे true पर सेट करना ज़रूरी है. अगर इसे false (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो वॉल्यूम बढ़ाने या घटाने वाले बटन के इवेंट, फ़ोरग्राउंड ऐप्लिकेशन को भेजे जा सकते हैं. इससे कार ऑडियो सेवा के बाहर, वॉल्यूम बढ़ाने या घटाने वाले बटन के इवेंट मैनेज करने से बुरे नतीजे मिल सकते हैं.
audioUseMinMaxActivationVolume कार सेवा की कॉन्फ़िगरेशन फ़ाइल में तय किया गया है, ताकि कम से कम और ज़्यादा से ज़्यादा ऐक्टिवेशन वॉल्यूम को चालू किया जा सके. जब true, तब कम से कम और ज़्यादा से ज़्यादा वॉल्यूम मैनेजमेंट की वजह से, वॉल्यूम गेन इंडेक्स को अडजस्ट किया जा सकता है. जब false (डिफ़ॉल्ट वैल्यू) होता है, तब कम से कम और ज़्यादा से ज़्यादा ऐक्टिवेशन वॉल्यूम का कोई असर नहीं पड़ता.
audioUseFadeManagerConfiguration कार सेवा की कॉन्फ़िगरेशन फ़ाइल में यह तय किया जाता है कि सिस्टम की ओर से ऑडियो फ़ोकस खोने की सुविधा चालू की जाए या नहीं. जब true, कार का ऑडियो फ़्रेमवर्क, कार के ऑडियो फ़ेड कॉन्फ़िगरेशन की परिभाषाओं को पार्स करता है और ऑडियो फ़ोकस के बंद होने की सूचना भेजते समय, FadeManagerConfiguration लागू करता है. जब 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/ शामिल होना चाहिए.

कार सर्विस RRO

Android 13 से, AAOS में रनटाइम रिसॉर्स ओवरले की सुविधा उपलब्ध है. कार के ऑडियो कॉन्फ़िगरेशन की वैल्यू बदलने के लिए, RRO का इस्तेमाल करें. उदाहरण के लिए, cuttlefish में automotive device/google/cuttlefish/shared/auto/rro_overlay/ के लिए RRO देखें. 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