ऑडियो कॉन्फ़िगरेशन के 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 होने पर, वॉल्यूम ग्रुप को म्यूट करने की सुविधा, ऑडियो कंट्रोल एचएएल में लागू की जानी चाहिए.
audioUseHalDuckingSignals इसे कार सेवा की कॉन्फ़िगरेशन फ़ाइल में तय किया जाता है, ताकि IAudioControl#onDevicesToDuckChange एपीआई को चालू किया जा सके. इससे एचएएल को यह जानकारी मिलती है कि कब डक करना है. true (डिफ़ॉल्ट वैल्यू) होने पर, एपीआई को ऐसे सिग्नल मिलते हैं जिनसे यह पता चलता है कि किन आउटपुट डिवाइसों को डक करना है और किन डिवाइसों पर फ़ोकस करना है. जब false, एपीआई को कॉल नहीं किया जाता है. जब तक ऑडियो कंट्रोल HAL डकिंग की सुविधा लागू नहीं करता, तब तक एपीआई को कॉल नहीं किया जाता.
config_oemCarService यह कार सेवा की कॉन्फ़िगरेशन फ़ाइल में तय किया गया है. यह OEM की कस्टम सेवा के लिए कॉम्पोनेंट का नाम है. ओईएम के पास इस सेवा को लागू करने का विकल्प होता है, ताकि वे अलग-अलग नीतियों के लिए कार की सेवा से जुड़ी कार्रवाइयों को कस्टमाइज़ कर सकें. अगर OEM इस कॉम्पोनेंट को लागू करने का विकल्प चुनते हैं, तो उन्हें 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 सिर्फ़ के ज़रिए भेजे जाएंगे. इसलिए, हमारा सुझाव है कि सभी ऐप्लिकेशन नए कॉलबैक इंटरफ़ेस पर माइग्रेट करें, ताकि परफ़ॉर्मेंस बेहतर बनी रहे.
  • डिफ़ॉल्ट वैल्यू false है. हमारा सुझाव है कि आप इसे true पर सेट करें, क्योंकि लेगसी वॉल्यूम कॉलबैक के साथ काम करने वाले एपीआई अब काम नहीं करते. इन्हें जल्द ही पूरी तरह से हटा दिया जाएगा.

config_useFixedVolume frameworks/base/core/res/res/values/config.xml में तय किया गया है. इसे true पर सेट किया जाना चाहिए, ताकि कार में मौजूद ऑडियो सिस्टम को आवाज़ कम या ज़्यादा करने की सुविधा को मैनेज करने की अनुमति मिल सके. अगर config_useFixedVolume फ़्लैग सेट नहीं है या false (डिफ़ॉल्ट वैल्यू) पर सेट है, तो ऐप्लिकेशन AudioManager वॉल्यूम मैनेजमेंट एपीआई को कॉल कर सकते हैं. साथ ही, सॉफ़्टवेयर मिक्सर में स्ट्रीम टाइप के हिसाब से वॉल्यूम बदल सकते हैं. ऐसा करना सही नहीं है, क्योंकि इससे दूसरे ऐप्लिकेशन पर असर पड़ सकता है. साथ ही, सॉफ़्टवेयर मिक्सर में आवाज़ कम करने से, हार्डवेयर ऐम्प्लीफ़ायर पर सिग्नल मिलने पर, कम बिट उपलब्ध हो सकती हैं. ऐसे नए डिवाइस जिन्हें कॉन्फ़िगर नहीं किया गया है और जिन्हें 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 का इस्तेमाल करें. उदाहरण के लिए, device/google/cuttlefish/shared/auto/rro_overlay/ में Automotive cuttlefish के रेफ़रंस के लिए 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