تستخدِم خدمة الصوت في السيارة سياسة الصوت الديناميكي في Core Audio لتسهيل حالات الاستخدام في السيارات.
تشغيل الصوت بشكل منفصل لكل راكب، ويُشار إليه باسم "الصوت المتعدّد المناطق"، حيث تسمح كل منطقة بتشغيل الصوت بشكل متزامن
ضبط منطقة الصوت الديناميكية
بث صوتي في المنطقة الأساسية للركاب
نسخ المحتوى الصوتي للراكب
في كل حالة استخدام، تستخدِم خدمة الصوت في السيارة سياسة الصوت الديناميكية لتوجيه الصوت تلقائيًا إلى جهاز الإخراج المحدَّد.
الصوت في مناطق متعددة
تتيح ميزة "الصوت في مناطق متعدّدة" لمستخدمين متعدّدين التفاعل مع AAOS في الوقت نفسه. يتم ربط مجموعة من أجهزة الإخراج بمنطقة معيّنة، وتحافظ كل منطقة على تركيز الصوت ومستوى الصوت. يمكن للمسافرين الاستماع إلى المحتوى الصوتي الخاص بهم بينما يستمع السائق إلى مصدر آخر في المنطقة الأساسية (عادةً ما يكون المقصورة الرئيسية).
بنية الصوت المتعدّد المناطق
الشكل 1: بنية خدمة الصوت في السيارة
مناطق الصوت في السيارة هي تمثيل تجريدي لمصادر الصوت وتركيز الصوت وغيرها من إعدادات الصوت، ويمكن إدارة كل ذلك بشكل مستقل. لأغراض التوجيه، يتم تعريف كل منطقة على أنّها مجموعة من أجهزة ناقل إخراج الصوت كما هو منظَّم في إعدادات سياسة الصوت. تختلف الأجهزة حسب كلّ تعريف لمنطقة صوتية. في الشكل 1، تنتمي أجهزة الحافلات من 1 إلى 5 إلى المنطقة صفر، وتنتمي أجهزة الحافلات من 6 إلى 8 إلى المنطقة الأولى، وتنتمي أجهزة الحافلات من 9 إلى 11 إلى المنطقة الثانية.
ضبط الصوت في السيارة
عادةً ما يتم تخصيص أجهزة الإخراج لمنطقة صوت واحدة. يتم تحديد كل منطقة صوت
في car_audio_configuration.xml
. يعرض المقتطف التالي من الرمز إعدادات
الصوت في السيارة للشكل 1:
<carAudioConfiguration version="3">
<zones>
<zone name="Zone0" audioZneId="0" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGoups>
<group>
<device address="bus_1">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_2">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_6">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_7">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
...
...
</zones>
</carAudioConfiguration>
occupantZoneId
هو تعريف خدمة صيانة سيارات تديره
CarOccupantZoneManager
. ويتم استخدامه في السيارات لتحديد تعيين مستخدم في
السيارة إلى موقع مقعد معيّن. CarOccupantZoneService
يحدِّد أيضًا
التعيين من منطقة المقيم إلى الشاشات والأجهزة الطرفية الأخرى والمستخدم بعد تسجيل
الدخول إلى شاشة. تتضمّن منطقة الصوت ما يلي:
رقم تعريف منطقة صوتية ورقم تعريف منطقة ركاب
- ربط منطقة الصوت بمنطقة الركاب (المقاعد والشاشات والأجهزة الطرفية الأخرى)
- ربط رقم تعريف المستخدم الذي تمّ تعيينه بمنطقة صوتية عند تسجيل الدخول
قائمة بإعدادات الصوت تحتوي كل إعدادات الصوت على مجموعة من مجموعات مستوى الصوت. تحتوي كل مجموعة حجم على مجموعة من أجهزة ناقل الصوت.
عند تغيير مستوى الصوت، يتم التحكّم في جميع أجهزة الصوت في المجموعة بالطريقة نفسها.
يتم تخصيص قائمة بسمات الصوت لكل جهاز صوتي. تُستخدَم هذه المعلومات لإنشاء مجموعات سياسات الصوت باستخدام سمات صوت مختلفة تمّ تعيينها.
تسمح هذه الإعدادات بتوجيه استخدامات سمة الصوت المختلفة إلى أجهزة إخراج مختلفة في كل منطقة. استنادًا إلى حالة الاستخدام، يمكن تشغيل أصوات مختلفة بالتزامن. على سبيل المثال، يمكنك اختيار ضبط المقصورة الرئيسية (المنطقة الأساسية) لتشغيل أصوات الوسائط على جميع مكبّرات الصوت، ولكن أصوات التنقّل فقط على مكبّرات الصوت الأقرب إلى السائق. من خلال تشغيل الصوت بشكل متزامن، يستمر سماع الوسائط في المقصورة الرئيسية بينما يتم عرض التوجيه على شاشة السائق.
سير عمل تسجيل دخول الركاب إلى نظام الصوت المتعدّد المناطق
يعرض الرسم التوضيحي التسلسلي أدناه مسار تفعيل توجيه الصوت عندما سجّل أحد المسافرين الدخول إلى شاشة العرض الخاصة به:
الشكل 2:
في هذه التسلسلية، يتم نشر تسجيل دخول المستخدم في خدمة الصوت في السيارة من خلال خدمة منطقة الركاب.
تستخدِم خدمة الصوت في السيارة (لمنطقة صوت معيّنة) واجهة برمجة التطبيقات
AudioPolicy#removeUserIdDeviceAffinity
لإزالة ملف تعريف الارتباط الخاص بالمستخدم. تأخذ واجهة برمجة التطبيقات هذه رقم تعريف مستخدم. في هذه الحالة، هو مستخدم المنطقة السابقة.تحدِّد واجهة برمجة التطبيقات
AudioPolicy#setUserIdDeviceAffinity
المستخدم الجديد في منطقة، ما يؤدي إلى ضبط رقم تعريف المستخدم وجميع الأجهزة لإعدادات منطقة معيّنة.
إعدادات المناطق الديناميكية
في الإصدار 14 من Android، تم طرح إعدادات المناطق الديناميكية للسماح لمصنّعي المعدّات الأصلية بضبط مجموعات مختلفة من الأجهزة للمسافرين. يتيح حالة الاستخدام للمسافرين في المقعد الخلفي التبديل بين مكبّر صوت المقعد الخلفي ومكبّر صوت ملحق لسماعات الرأس في المقعد الخلفي.
في هذه الحالة، يجب إجراء عمليتَي ضبط. واحد لكل من مسند الرأس في المقعد الخلفي ووحدة التحكم في سماعات الرأس. يتم توجيه الصوت لمستخدم محدّد فقط إلى إعداد واحد في كل مرة.
الشكل 3: سير عمل ضبط المنطقة الديناميكية
يوضّح الشكل 3 بنية سير العمل لإعداد المنطقة الديناميكية. يحتوي "منطقة الصوت 1" على إعدادَين، Config 0
وConfig 1
،
وهما مرتبطان بمكبّر صوت جهاز الإخراج ومسند الرأس، على التوالي.
عند تسجيل الدخول، يتم تلقائيًا منح المستخدم الإعدادات التلقائية. عندما يختار المستخدم تغيير الإعدادات، عادةً من خلال واجهة مستخدم النظام، تنفِّذ خدمة نظام الصوت في السيارة عملية التبديل بين الإعدادَين. بهذه الطريقة، يتم تبديل جهاز الإخراج بين مكبّر صوت Z1 ومسند الرأس Z1.
يعرض مقتطف الرمز البرمجي أدناه عملية إعداد إعدادات المنطقة الديناميكية هذه.
<carAudioConfiguration version="3">
<zones>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="Zone 1 Config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_100">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
<zoneConfig name="Zone 1 Config 1">
<volumeGroups>
<group>
<device address="bus_101">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
</zones>
لتسهيل إدارة إعدادات الصوت، يعرِض "مدير الصوت في السيارة" واجهات برمجة تطبيقات لإدارة الإعدادات:
- إعدادات طلبات البحث المتاحة لمنطقة معيّنة
- طلب البحث الذي تم ضبط إعداداته حاليًا لمنطقة معيّنة
- التبديل إلى إعدادات مختلفة
يمكن لخدمة أو تطبيق واجهة مستخدم النظام استخدام واجهات برمجة التطبيقات هذه لإدارة إعدادات منطقة الصوت كما هو موضّح في الشكل 4. تعرض Query API هذين الخيارَين للمسافر. يمكن للمستخدم اختيار إعدادات مختلفة من خلال النقر على أمر للإعدادات المطلوبة.
الشكل 4: سير عمل ضبط المنطقة الديناميكية
بث الصوت للركاب في المنطقة الأساسية
ميزة بث الصوت للركاب في المنطقة الأساسية هي ميزة تم تقديمها في Android 14 لسماح الركاب ببث صوت الوسائط في المنطقة الأساسية. بهذه الطريقة، يمكن بث صوت الوسائط الخاص بالراكب إلى المقصورة الرئيسية مع الاحتفاظ بالتحكم الكامل في الوسائط من قِبل السائق.
يعرض الشكل أدناه نسخة مبسّطة من البنية الأساسية لبث الوسائط الصوتية في المقصورة الرئيسية.
الشكل 5: سير عمل ضبط المنطقة الديناميكية
توضِّح الصورة أنّه تتم مشاركة جهاز إخراج الوسائط الخاص بالسائق مع الصعيقل، ولا يحدث ذلك إلا عندما يكون الصعيقل في وضع بث الوسائط إلى المنطقة الأساسية. تُستخدَم سياسة الصوت الديناميكية أيضًا لإدارة توجيه الصوت لملف تعريف السائق، ولكن لا يتم تطبيق أي تغييرات على توافقات الجهاز لملف التعريف. بالنسبة إلى الراكب، يتم تغيير قائمة أجهزة الإخراج على النحو التالي:
- إزالة جهاز إخراج الوسائط الخاص بالراكب من قائمة الأجهزة
- تتم إضافة جهاز إخراج الوسائط الخاص بالبرنامج إلى قائمة الأجهزة.
- تظلّ أجهزة الإخراج المتبقية لمناطق الصوت الخاصة بالركاب في قائمة الأجهزة.
يتم تحديد قائمة الأجهزة الجديدة هذه للمسافر من خلال واجهة برمجة التطبيقات
AudioPolicy#setUserIdDeviceAffinity
. المَعلمات التي يتم تمريرها إلى واجهة برمجة التطبيقات هي
قائمة الأجهزة ورقم تعريف مستخدم الراكب. عندما تسأل خدمة سياسة
الصوت في النظام الصوتي عن مزيج الصوت الذي يجب اختياره لمقطع وسائط
مرتبط بالراكب، يتم اختيار مزيج صوت الوسائط المرتبط
بالمنطقة الأساسية.
من المتطلبات الأساسية لبث الصوت في المنطقة الأساسية أن يكون جهاز إخراج وسائط المنطقة الأساسية معزولاً عن استخدامات سمة الصوت الأخرى. بخلاف ذلك، تتم إضافة سمات صوتية أخرى إلى المزيج أثناء إنشاء مجموعات المحتوى الصوتي. عندما يختار نظام الصوت مجموعة المحتوى، يتم اختيار جميع الأصوات المرتبطة بالمزيج لتشغيلها في المقصورة الرئيسية.
ميزة "نسخ الصوت في منطقة الركاب"
تتيح ميزة "مرآة الصوت" للمسافرين مشاركة المحتوى الصوتي. تعمل ميزة "المرآة" على تكرار بيانات الصوت في كل منطقة صوتية حتى يتمكّن جميع الركاب من الاستماع إلى الصوت نفسه. في هذه الحالة، تتم مشاركة تركيز الصوت مع الركاب المشاركين في ميزة "إقران الصوت".
توجيه الصوت المطابق
يجب أن يكون هناك راكبَان على الأقل لتفعيل ميزة "إقران الصوت". نتيجةً لذلك، فإنّ ضبط الصوت مع منطقتَي صوت فقط للمسافرين سيتطلب جهاز إخراج مرآة واحدًا. باستخدام التعريف أعلاه، يمكن بدء جلستَي انعاكس متزامنتَين.
يعرض الشكل أدناه رسمًا تخطيطيًا مبسطًا لميزة "إقران الصوت في عدة مناطق"
بين راكبين. يتم توجيه الصوت من كلا الراكبَين إلى جهاز bus_1000
الذي يعرض المحتوى الصوتي على الشاشة. يكرّر Audio HAL الإشارة إلى مناطق المصدر.
الشكل 6: سير عمل ضبط المنطقة الديناميكية
لا يتم تفعيل هذا التوجيه إلا عندما يكون الركاب في وضع النسخ المطابق. وإذا
لم يكن الأمر كذلك، يتم تخصيص الأجهزة المقابلة لمنطقة الصوت للمسافرين.
عند تفعيل ميزة "النسخ المطابق" لأول مرة لأحد الركاب، تعدّل واجهة برمجة التطبيقات
AudioPolicy#setUserIdDeviceAffinity
عملية التوجيه:
- تتم إزالة جهاز إخراج الوسائط الخاص بالراكب من قائمة الأجهزة.
- تمت إضافة جهاز الإخراج المطابق إلى قائمة الأجهزة.
- تظلّ أجهزة الإخراج المتبقية لمنطقة الصوت في مقصورة الركاب مُدرَجة في قائمة الأجهزة.
باستخدام قائمة الأجهزة، يتمّ استدعاء واجهة برمجة التطبيقات مع القائمة المعدّلة للأجهزة و رقم تعريف مستخدم الراكب. تقدّم الصورة التالية مخطّط تسلسل لسير عمل ميزة مرآة الصوت.
الشكل 7: سير عمل نسخ المحتوى الصوتي
في الشكل 7، يتم استدعاء واجهات برمجة التطبيقات الخاصة بمدير الصوت في السيارة لإدارة ميزة "إقران الصوت" من خلال "خدمة نظام الوسائط". على وجه التحديد، واجهة برمجة التطبيقات لتفعيل ميزة "تسجيل المحتوى الصوتي"CarAudioManager#enableMirrorForAudioZones
للمستخدم "أ" والمستخدم "ب".
تضبط خدمة الصوت في السيارة توجيه الصوت للمستخدِمين الركاب كما هو описан أعلاه. تُرسِل خدمة الصوت في السيارة أيضًا إشارة إلى HAL الصوتي لضبط الصوت وتكراره من جهاز المرآة إلى مناطق البث المقابلة.
في الصورة أعلاه، تُرسِل خدمة الصوت في السيارة
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
حيث
bus_1000
هي الحافلة المصدر وbus_10
وbus_20
هما حافتا الوجهة.
لا يظهر في مخطّط التسلسل الإشارة المُرسَلة من خلال واجهة برمجة التطبيقات
AudioManager#setParameters
، والتي تصل إلى HAL من خلال
خدمة الصوت.
عند إيقاف ميزة "نسخ الصوت"، يتم إرسال الإشارة التالية:
mirroring_src=bus_1000;mirroring=off
. يمكن أن يستخدم HAL هذه الإشارة لإيقاف تكرار الصوت عندما لا يكون خيار "مطابقة الصوت" مفعّلاً. لتحديد أجهزة عكس الصوت، يحتوي ملف ضبط الصوت في السيارة على قسم باسم
mirroringDevices
، كما هو موضّح في المقتطف أدناه.
في هذا المقتطف، تم تحديد جهازَي بث، bus_1000
وbus_2000
،
لكي يتمكّن أربعة ركاب من استخدام ميزة "بث الصوت".
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>