توجيه الصوت في مناطق متعددة

تستخدم خدمة الصوت في السيارة سياسة الصوت الديناميكي Core Audio لتسهيل حالات الاستخدام في السيارات.

  • تشغيل الصوت بشكل منفصل لكل راكب، ويُعرف ذلك باسم "الصوت المتعدّد المناطق"، حيث تتيح كل منطقة تشغيل الصوت بشكل متزامن

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

  • بث الصوت في منطقة الركاب الأساسية

  • نسخ المحتوى الصوتي للراكب

في كل حالة استخدام، تستخدم خدمة الصوت في السيارة سياسة الصوت الديناميكية لتوجيه الصوت تلقائيًا إلى جهاز الإخراج المحدّد.

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

تتيح ميزة "الصوت المتعدد المناطق" لعدة مستخدمين التفاعل مع نظام التشغيل Android Automotive في الوقت نفسه. ترتبط مجموعة من أجهزة الإخراج بمنطقة، وتحتفظ كل منطقة بتركيز الصوت ومستوى الصوت. يمكن للركاب الاستماع إلى الصوت بينما يستمع السائق إلى مصدر آخر في المنطقة الأساسية (عادةً، المقصورة الرئيسية).

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

بنية خدمة الصوت في السيارة

الشكل 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.

في هذا التسلسل، يتم نشر عملية تسجيل دخول المستخدم إلى خدمة الصوت في السيارة من خلال خدمة منطقة الركاب.

  1. تستخدم خدمة الصوت في السيارة (لمنطقة صوتية معيّنة) واجهة برمجة التطبيقات AudioPolicy#removeUserIdDeviceAffinity لإزالة عمليات الربط بين أجهزة المستخدمين. تتلقّى واجهة برمجة التطبيقات هذه رقم تعريف المستخدم. في هذه الحالة، يكون مستخدم المنطقة السابقة.

  2. يُعيّن واجهة برمجة التطبيقات AudioPolicy#setUserIdDeviceAffinity المستخدم الجديد إلى منطقة، وتتضمّن المنطقة رقم تعريف المستخدم وجميع الأجهزة لإعدادات منطقة معيّنة.

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

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

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

سير عمل إعدادات المنطقة الديناميكية

الشكل 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. المَعلمات التي يتم تمريرها إلى واجهة برمجة التطبيقات هي قائمة الأجهزة ورقم تعريف مستخدم الراكب. عندما تستعلم خدمة سياسة الصوت في نظام الصوت عن المزيج الصوتي الذي سيتم اختياره لمقطع وسائط مرتبط بالراكب، يتم اختيار مزيج صوت الوسائط المرتبط بالمنطقة الأساسية.

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

نسخ المحتوى الصوتي في منطقة الركاب

تتيح ميزة "مشاركة الصوت" للركاب مشاركة الصوت. تكرّر ميزة "المرآة" بيانات الصوت في كل منطقة صوتية حتى يتمكّن جميع الركاب من الاستماع إلى الصوت نفسه. في هذه الحالة، تتم مشاركة تركيز الصوت مع الركاب المشاركين في عملية عكس الصوت.

توجيه النسخ المطابق للمحتوى الصوتي

يجب توفّر راكبَين على الأقل لتفعيل ميزة "مشاركة الصوت". نتيجةً لذلك، يتطلّب إعداد الصوت الذي يتضمّن منطقتَي صوت للركاب فقط جهاز إخراج واحد لعرض المحتوى نفسه. باستخدام التعريف أعلاه، يمكن بدء جلستَي عرض متزامن متزامنتَين.

يوضّح الشكل أدناه رسمًا بيانيًا مبسطًا لميزة &quot;مشاركة الصوت في مناطق متعددة&quot; بين راكبَين. يتم توجيه الصوت من كلا الراكبين إلى جهاز عرض الصوت bus_1000. تكرّر طبقة تجريد الأجهزة الصوتية الإشارة إلى مناطق المصدر.

سير عمل إعدادات المنطقة الديناميكية

الشكل 6. سير عمل إعداد المنطقة الديناميكية

يتم تفعيل التوجيه فقط عندما يكون الركاب في وضع العرض المتطابق. إذا لم يكن الأمر كذلك، يتم تخصيص الأجهزة المناسبة لمنطقة الصوت للركاب. عند تفعيل ميزة &quot;عرض المحتوى على شاشة أخرى&quot; لأحد الركاب للمرة الأولى، تعدّل واجهة برمجة التطبيقات AudioPolicy#setUserIdDeviceAffinity عملية التوجيه على النحو التالي:

  • تمت إزالة جهاز تشغيل الوسائط الخاص بالراكب من قائمة الأجهزة.
  • تمت إضافة جهاز إخراج المرآة إلى قائمة الأجهزة.
  • تبقى أجهزة الإخراج المتبقية لمنطقة الصوت الخاصة بالراكب في قائمة الأجهزة.

باستخدام قائمة الأجهزة، يتم استدعاء واجهة برمجة التطبيقات مع قائمة الأجهزة المعدَّلة ومعرّف المستخدم الخاص بالراكب. تقدّم الصورة التالية مخططًا تسلسليًا لسير عمل ميزة &quot;نسخ الصوت&quot;.

سير عمل النسخ المطابق للمحتوى الصوتي

الشكل 7. سير عمل النسخ المطابق للمحتوى الصوتي

في الشكل 7، يتم استدعاء واجهات برمجة التطبيقات الخاصة بإدارة ميزة &quot;نسخ الصوت&quot; في مدير صوت السيارة من &quot;خدمة نظام الوسائط&quot;. على وجه التحديد، واجهة برمجة التطبيقات لتفعيل ميزة عرض الصوت على شاشة أخرى للمستخدم 1 والمستخدم 2، 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>