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

تستخدم خدمة الصوت في السيارة سياسة الصوت الديناميكي 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" occupantZoneI="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 API بتعيين المستخدم الجديد لمنطقة ما، والتي تأخذ معرف المستخدم وجميع الأجهزة لتكوين منطقة معينة.

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

في 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. تعرض واجهة برمجة تطبيقات الاستعلام الاثنين للراكب. يمكن للمستخدم تحديد تكوين مختلف عن طريق النقر على أمر للتكوين المطلوب.

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

الشكل 4. سير عمل تكوين المنطقة الديناميكية.

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

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

يوضح الشكل أدناه نسخة مبسطة من بنية البث الصوتي لوسائط الركاب الأساسية في المنطقة.

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

الشكل 5. سير عمل تكوين المنطقة الديناميكية.

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

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

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

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

مرآة صوتية لمنطقة الركاب

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

توجيه مرآة الصوت

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

يوضح الشكل أدناه مخططًا مبسطًا لانعكاس الصوت متعدد المناطق بين راكبين. يتم توجيه الصوت من كلا الراكبين إلى جهاز مرآة الصوت، bus_1000 . يقوم Audio HAL بتكرار الإشارة إلى مناطق المصدر.

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

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

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

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

مع قائمة الأجهزة، يتم استدعاء واجهة برمجة التطبيقات (API) مع القائمة المحدثة للأجهزة ومعرف المستخدم الخاص بالراكب. توفر الصورة التالية مخططًا تسلسليًا لسير عمل مرآة الصوت.

سير عمل مرآة الصوت

الشكل 7. سير عمل مرآة الصوت.

في الشكل 7، يتم استدعاء واجهات برمجة التطبيقات الخاصة بمدير صوت السيارة لإدارة النسخ المتطابق للصوت من خدمة نظام الوسائط. على وجه التحديد، واجهة برمجة التطبيقات (API) لتمكين النسخ المتطابق للصوت للمستخدم 1 والمستخدم 2، CarAudioManager#enableMirrorForAudioZones .

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

في الصورة أعلاه، تقوم خدمة الصوت في السيارة بإرسال mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

أين،

bus_1000 هي الحافلة المصدر و bus_10 و bus_20 هما حافلتا الوجهة.

لا يظهر في مخطط التسلسل الإشارة المرسلة عبر AudioManager#setParameters API، والتي تصل إلى 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>