إعدادات الصوت في السيارة

في Android 10، تم استبدال car_audio_configuration.xml. car_volumes_groups.xml وIAudioControl.getBusForContext سياسة الصوت الملفات، الموجودة عادةً في قسم المورد، تمثل أجهزة الصوت وتهيئة اللوحة. جميع الأجهزة المشار إليها في يجب تحديد car_audio_configuration.xml في audio_policy_configuration.xml

يوضّح الشكل 1 أدناه نظرة عامة عالية المستوى على خدمة الصوت في السيارة البنية التي تقرأ فيها الخدمة الصوتية للسيارة التكوين الصوتي للسيارة لإعداد الصوت للجهاز.

نظرة عامة على هندسة الصوت في السيارة

الشكل 1. نظرة عامة على هندسة الصوت في السيارة

يجب وضع ملف إعدادات الصوت في السيارة في "vendor\etc\" أو system\etc\ على الجهاز مع "vendor\etc\" لكونه أول مكان تبحث فيه الخدمة عن الملفات الصوتية للسيارة. السيارة تقرأ الخدمات الصوتية اللغة car_audio_configuration.xml لتحديد مستوى الصوت. التكوين.

مناطق الصوت في السيارة:

  • تحتوي كل منطقة صوتية على معرّف فريد للمنطقة الصوتية.
  • ويمكن تعيين كل منطقة صوت إلى منطقة يقيم فيها.
  • تكون الإجراءات الصوتية في كل منطقة مستقلة عن بعضها البعض:

    • التركيز على الصوت
    • التوجيه الصوتي
    • تجنّب التداخل مع أصوات أخرى
  • مجموعات مستوى صوت السيارات:

    • يتم التحكّم معًا في جميع الأجهزة السماعية التي تحتوي على مجموعة مستوى صوت. مع التغييرات نفسها في مستوى ربح الأرباح ضبط مستوى الصوت على جميع الأجهزة في المجموعة الواحدة ينبغي أن تكون متماثلة.

    • سياق الصوت لربط الأجهزة الصوتية: استخدام هذا لإنشاء مقطع صوتي يحدد استخدامات الصوت لجهاز إخراج.

    • يجب تمثيل كل السياقات الصوتية ضمن منطقة معيّنة. هذا يسمح للتوجيه الصوتي كي يتم إعداده بدقة لجميع استخدامات السمات الصوتية.

السياقات الصوتية

لتبسيط عملية ضبط صوت AAOS، تم تجميع الاستخدامات المماثلة. إلى CarAudioContexts. تُستخدم السياقات الصوتية هذه طوال CarAudioService لتحديد التوجيه ومجموعات مستوى الصوت والتركيز على الصوت والتجنب المشروع. في ما يلي سياقات الصوت الثابت في نظام التشغيل Android Automotive.

يصف هذا الجدول عملية الربط بين سياقات الصوت واستخداماته. مميزة تتوفّر صفوف لاستخدام النظام الجديد.

سياق السيارة الصوتية استخدامات السمات المرتبطة
موسيقى UNKNOWN
GAME
MEDIA
التنقّل ASSISTANCE_NAVIGATION_GUIDANCE
الأوامر_الصوتية ASSISTANT
ASSISTANCE_ACCESSIBILITY
جارٍ الاتصال بـ CALL_RING NOTIFICATION_RINGTONE
اتصال VOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
التنبيه ALARM
الإشعار NOTIFICATION
NOTIFICATION_*
صوت النظام ASSISTANCE_SONIFICATION
الطوارئ EMERGENCY
السلامة SAFETY
VEHICLE_STATUS VEHICLE_STATUS
الإعلان عن المرشحين ANNOUNCEMENT

تفعيل توجيه AAOS

لاستخدام التوجيه المستنِد إلى AAOS، يجب ضبط العلامة audioUseDynamicRouting على true:

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

عندما يتم إيقاف false، يتم إيقاف التوجيه والكثير من إعدادات CarAudioService وتنهار AAOS. نعود إلى السلوك التلقائي لـ AudioService.

المنطقة الأساسية

يتم تلقائيًا توجيه كل الأصوات إلى المنطقة الأساسية. منطقة أساسية واحدة فقط موجود، ويشار إليه في التهيئة من خلال السمة isPrimary="true" يتم تعيين المنطقة الأساسية تلقائيًا Audiomanager.PRIMARY_AUDIO_ZONE

نموذج الضبط (الإصدار 2)

على سبيل المثال، قد تتوفر للمركبة منطقتان، ومنطقة أساسية ومقاعد خلفي. نظام الترفيه. في هذا السيناريو، يمكنك تصميم نموذج car_audio_configuration.xml الإصدار 2 على النحو التالي:

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true">
           <volumeGroups>
               <group>
                   <device address="bus0_media_out">
                       <context context="music"/>
                       <context context="announcement"/>
                   </device>
                   <device address="bus3_call_ring_out">
                       <context context="call_ring"/>
                   </device>
                   <device address="bus6_notification_out">
                       <context context="notification"/>
                   </device>
               </group>
               <group>
                   <device address="bus1_navigation_out">
                       <context context="navigation"/>
                   </device>
                   <device address="bus2_voice_command_out">
                       <context context="voice_command"/>
                   </device>
               </group>
               <group>
                   <device address="bus4_call_out">
                       <context context="call"/>
                   </device>
               </group>
               <group>
                   <device address="bus5_alarm_out">
                       <context context="alarm"/>
                   </device>
               </group>
               <group>
                   <device address="bus7_system_sound_out">
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                   </device>
               </group>
           </volumeGroups>
       </zone>
        <zone name="rear seat zone" audioZoneId="1">
           <volumeGroups>
               <group>
                   <device address="bus100_rear_seat">
                       <context context="music"/>
                       <context context="navigation"/>
                       <context context="voice_command"/>
                       <context context="call_ring"/>
                       <context context="call"/>
                       <context context="alarm"/>
                       <context context="notification"/>
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                       <context context="announcement"/>
                   </device>
               </group>
           </volumeGroups>
    </zones>
</audioZoneConfiguration>

في هذا المثال، تفصل المنطقة الأساسية بعض السياقات الصوتية أجهزة مختلفة. يمكّن هذا الإجراء HAL من تطبيق إجراءات معالجة ما بعد معالجة مختلفة التأثيرات ومزج المخرجات على كل جهاز باستخدام معدّات المركبة. تم ترتيب الأجهزة في عدة مجموعات مستوى صوت: الوسائط والتنقل المكالمات والمنبّهات وأصوات النظام إذا تم ضبط النظام على useFixedVolume، يتم بعد ذلك تمرير مستويات الصوت لكل مجموعة إلى HAL. تطبيقها على ناتج هذه الأجهزة.

بالنسبة إلى المنطقة الأساسية، ننصح بأن تكون أصوات النظام منفصلة عن الأصوات الأخرى أصوات. يتيح هذا الإجراء معالجة أصوات المركبات بأولوية أعلى. تعمل خدمة الصوت في السيارة بالفعل على هذه الاختلافات لأصوات المركبات في شروط التركيز وإدارة الهروب. على سبيل المثال، التركيز على صوت الطوارئ أولوية أعلى من طلب تركيز آخر.

لتبسيط الأمور، في مثال المنطقة الثانوية جميع السياقات الصوتية يتم توجيهها إلى جهاز واحد ومجموعة واحدة من إعدادات مستوى الصوت.

إعدادات الصوت في منطقة الإشغال

في نظام التشغيل Android 11، تم تقديم "car_audio_configuration.xml". حقلَين جديدَين، هما audioZoneId وoccupantZoneId. يمكنك استخدام audioZoneId للتحكم في إدارة منطقة الصوت. يمكنك استخدام occupantZoneId لضبط الإعدادات. التوجيه استنادًا إلى معرّف المستخدم.

إعادة النظر في تهيئة الصوت أعلاه، ولكن استخدام الحقل الجديد معرِّف منطقة الإشغال وتخطيط معرف منطقة الصوت، وهو الإعداد الجديد بدون يمكن إعداد تعريفات مجموعات الحجم على النحو التالي.

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true" occupantZoneId="0">
         ...
       </zone>
       <zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
         ...
       </zone>
    </zones>
</audioZoneConfiguration>

تحدد الإعدادات أعلاه تعيين المنطقة الأساسية لمنطقة الإشغال 0. وaudioZoneId 1 إلى occupantZoneId 1. بشكل عام، أي تعيين بين يمكن إعداد منطقة الإشغال ومنطقة الصوت. ومع ذلك، يجب أن يكون التعيين واحد لواحد. يتم سرد القواعد التي حددت الحقلين الجديدين أدناه.

  • تكون القيمة audioZoneId للمنطقة الأساسية دائمًا رقم تعريف PRIMARY_AUDIO_ZONE. في حال حذف يتم تحديد isPrimary="true"، وبالتالي لا حاجة إلى السمة audioZoneId.

  • لا يمكن تكرار audioZoneId ورقمَين (occupantZoneId).

  • يمكن إجراء ربط بين "audioZoneId" و"occupantZoneId" فقط.

إعدادات الصوت في سيارة Android 14

في نظام التشغيل Android 14، قدَّمت AAOS خدمة المكوّنات الإضافية للمصنّع الأصلي للجهاز، تتيح لك إدارة السلوك الصوتي الخاضع لإشراف السيارة بفعالية أكبر. خدمة الصوت. إلى جانب خدمات المكونات الإضافية الجديدة، فإن التغييرات التالية هي تمت إضافته إلى ملف إعدادات صوت السيارة:

  • سياق صوت السيارة المحدّد من قِبل المصنّع الأصلي للجهاز
  • الإعدادات الديناميكية غير الأساسية للمنطقة

سياق صوت السيارة الذي يحدّده المصنّع الأصلي للجهاز

لتفعيل إعدادات الصوت المرنة في Android 14، تسمح خدمة الصوت في السيارة بجعل استخدامات الصوت مجمّعة بشكل مختلف عن السياقات الصوتية الثابتة المحدّدة أعلاه. يمكن تحديد هذا السياق الذي يحدّده المصنّع الأصلي للجهاز في car_audio_configuration.xml الإصدار 3.

بدلاً من ذلك، يتم استخدام سياقات الصوت الثابتة المحددة حاليًا. الجمهور في ما يلي تنسيق صوت السيارة الذي يحدّده المصنّع الأصلي للجهاز.

تتطلّب سياقات المصنّع الأصلي للجهاز name بالإضافة إلى قائمة بسمات الصوت. الاستخدام التي يتم تعيينها إلى السياق. في المثال أعلاه، هناك سياقان المحددة:

<carAudioConfiguration version="3">
    <oemContexts>
        <oemContext name="media">
            <audioAttributes>
                <usage value="AUDIO_USAGE_MEDIA" />
    <usage value="AUDIO_USAGE_UNKNOWN"/>
            </audioAttributes>
        </oemContext>
        <oemContext name="game">
            <audioAttributes>
                <usage value="AUDIO_USAGE_GAME" />
            </audioAttributes>
        </oemContext>
...
  • سياق "media" يتضمّن AUDIO_USAGE_MEDIA وAUDIO_USAGE_UNKNOWN
  • سياق game يحتوي على AUDIO_USAGE_GAME فقط

يجب تحديد السياق في أعلى car_audio_configuration.xml. الملف. عند تحديد سياقات المصنّع الأصلي للجهاز، تشمل باقي إعدادات الصوت في السيارة يمكنك المتابعة كما كان من قبل. تنطبق القواعد التالية على سياق الصوت في السيارة:

  • وتكون تعريفات سياق المصنّع الأصلي للجهاز اختيارية. إنّ السياق الصوتي الثابت عبارة عن استخدامه بدلاً من ذلك.

  • ويجب عدم تكرار أسماء السياقات.

  • لا تعيِّن استخدام سمة الصوت لسياقات متعدّدة.

  • يجب استخدام جميع استخدامات الصوت المحددة في AudioAttributes للإنشاء السياق.

بعبارة أخرى، android.audio.policy.configuration.V7_0.AudioUsage يجب استخدام تمثيل السلسلة لاستخدام الصوت مع سياق الصوت الخاص بالمُصنّع الأصلي التعريف. في المستقبل، سيتم تعيين الاستخدامات الأحدث للسمات الصوتية السياق الأنسب لتقليل الأخطاء أثناء نقل البيانات من أحد أجهزة Android نسخة إلى أخرى.

تم تقديم السياق الذي حدّده المصنّع الأصلي للجهاز لتوسيع نطاق المكوّن الإضافي للمصنّع الأصلي للجهاز. خدمة صوتية، إلا أنه لا يزال من الممكن استخدامها بدون خدمة المكونات الإضافية للمُصنّع الأصلي. الصوت يشبه طريقة عمل خدمة الصوت الثابتة:

  • تفاعلات التركيز على الصوت يتم استخدام سمة الصوت لتحديد أفضل سلوك المطابقة كما تم إعداده بواسطة مصفوفة تفاعل التركيز الصوتي. بالنسبة التفاصيل، يُرجى الاطّلاع على التركيز على الصوت.

  • تُستخدَم سمة الصوت للتحكّم في مستوى الصوت لتحديد أفضل مطابقة:

    • مجموعة الحجم استنادًا إلى السياق الذي حدّده المصنّع الأصلي للجهاز.
    • تم ضبط الأولوية من قائمة الوحدات الثابتة.
  • سلوك تجنب التداخل مع أصوات أخرى:

    • يتم استخدام سمة الصوت لتركيز الصوت الحالي للضبط على إخراج معلومات الجهاز الصوتي على النحو المحدّد في إعدادات الصوت في السيارة الملف.

    • تُستخدم تصنيف الصوت لتعيين السياق الثابت المقابل للبطة، بناءً على مصفوفة تجنب التداخل مع أصوات أخرى.

إعدادات مناطق الصوت الديناميكية

في نظام التشغيل Android 14، للتوافق مع مناطق الصوت الديناميكية فإن مخطط تكوين صوت السيارة لتحديد مناطق الصوت تم تحديثه أيضًا إلى الإصدار 3. يتطلب المخطط الجديد ضبط الإعدادات لكل منطقة.

<carAudioConfiguration version="3">
    <!-- optional OEM context -->
    <oemContexts>
      <oemContext name="media">
        <audioAttributes>
          <usage value="AUDIO_USAGE_MEDIA" />
          <usage value="AUDIO_USAGE_UNKNOWN"/>
        </audioAttributes>
      </oemContext>
      <oemContext name="game">
        <audioAttributes>
          <usage value="AUDIO_USAGE_GAME" />
        </audioAttributes>
      </oemContext>
...
    </oemContexts>
  <zones>
    <zone name="primary zone" isPrimary="true" occupantZoneId="0">
      <zoneConfigs>
        <zoneConfig name="primary zone config 0" isDefault="true">
          <volumeGroups>
            <group>
              <device address="bus0_media_out">
                <context context="media"/>
            <context context="game"/>
                <context context="announcement"/>
              </device>
              <device address="bus6_notification_out">
                <context context="notification"/>
              </device>
            </group>
  ...
      </zoneConfigs>
    </zone
  </zones>

لمعرفة المزيد من المعلومات، راجع ملف الإصدار 3 المحدد في device/generic/car/emulator/audio/car_audio_configuration.xml ستبدأ بعد Android 14، لا يمكن أن تتضمّن المنطقة الأساسية سوى سمة واحدة (1) التكوين. يمكن أن تتضمن المناطق غير الأساسية عمليات ضبط متعددة. ما يلي: تنطبق على إعدادات الصوت في السيارة:

  • يمكن أن تتضمّن منطقة الصوت الأساسية إعدادات واحدة فقط.

  • يمكن أن تتضمن مناطق الصوت غير الأساسية عدة إعدادات.

  • يجب أن يكون الاسم فريدًا لكل منطقة صوتية وإعداد منطقة صوتية.

  • قد تختلف إعدادات الصوت ضمن منطقة صوتية:

    • لا يجب أن يكون إعداد مجموعات مستوى الصوت متماثلاً.
    • لا يلزم تطابق إعداد السياق الصوتي.
  • يجب أن تكون أسماء أجهزة إخراج الصوت فريدة في مختلف المناطق أو الإعدادات. حاسمة يجب أن يظهر اسم الجهاز فقط مرة واحدة في إعدادات الصوت أو المناطق.

  • يجب أن تتضمّن الأجهزة السماعية التي تنتمي إلى مجموعة مستوى الصوت نفسها الصوت نفسه. لاكتساب التكوينات.

  • يجب تعيين كل السياقات الصوتية (المصنّع الأصلي أو الثابت) لكل صوت. التكوين.

التوافق مع عمليات إعادة التوجيه

على الرغم من أنّ الإصدارات الجديدة من car_audio_configuration.xml تقدّم في كل تحديث، فلا يزال بإمكانك استخدام الملفات القديمة في الإصدارات الأحدث من نظام التشغيل Android Automotive. بعد التحديث إلى إصدارات جديدة من Android، يمكن للمصنّعين الأصليين للأجهزة إعادة استخدام ملف car_audio_configuration.xml.

لاستخدام ميزة جديدة تتطلب معلومات جديدة مضمنة في car_audio_configuration.xml، يجب تحديث الإصدار. جارٍ محاولة الاستخدام نسخة قديمة من ملف يشتمل على معلومات غير مدعومة في إصدار الملف هذا تعرض IllegalStateException عند بدء خدمة السيارة. الاستثناء تحتوي رسالة على المعلومات ذات الصلة حول المعلومات التي يتم استخدامها الحد الأدنى للإصدار المطلوب.