في 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 |
التنقّل | ASSISTANCE_NAVIGATION_GUIDANCE |
الأوامر_الصوتية | ASSISTANT |
جارٍ الاتصال بـ 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
عند بدء خدمة السيارة. الاستثناء
تحتوي رسالة على المعلومات ذات الصلة حول المعلومات التي يتم استخدامها
الحد الأدنى للإصدار المطلوب.