يحسِّن نظام التشغيل Android 10 تجربة المستخدم التي تتطلّب أكثر من عملية تسجيل صوت نشطة واحدة في الوقت نفسه، مثلاً إذا أراد المستخدم التحكّم في مكالمة عبر بروتوكول الصوت على الإنترنت (VoIP) أو مسجّل فيديو باستخدام طلبات صوتية تقدّمها خدمة مخصّصة لتسهيل الاستخدام.
ينفّذ إطار عمل الصوت السياسة التي تسمح لبعض التطبيقات ذات الامتيازات فقط بتسجيل الصوت بشكل متزامن مع التطبيقات العادية.
يتم تنفيذ سياسة التشغيل المتزامن من خلال كتم صوت الصوت الذي تم تسجيله بدلاً من منع التطبيق من بدء التسجيل. يتيح ذلك للإطار معالجة التغييرات بشكل ديناميكي في عدد حالات الاستخدام النشطة للتسجيل وأنواعها، بدون منع تطبيق من بدء التسجيل في حال إمكانية استعادة الوصول الكامل إلى الميكروفون بعد أن ينتهي تطبيق آخر من التسجيل.
ونتيجة لذلك، يجب أن يتوافق كل من طبقة تجريد الأجهزة الصوتية (HAL) ونظام الصوت الفرعي مع عدة مصادر نشطة لبث الإدخال في الوقت نفسه، حتى إذا كان مصدر واحد فقط يوفّر صوتًا غير صامت لعميل نشط في بعض الحالات.
متطلبات العناية الواجبة بالعملاء
يُرجى الاطّلاع على مستندات تعريف الجهاز (CDD) لمعرفة متطلبات إتاحة تسجيل المحتوى بشكل متزامن.
التقاط المواقف من طبقة تجريد الأجهزة الصوتية (HAL)
يمكن أن يؤدي سيناريو الالتقاط المتزامن إلى حالات مختلفة من حيث عدد أحداث البث النشطة، أو اختيار جهاز الإدخال، أو إعداد المعالجة المسبقة.
يمكن أن يحدث التزامن بين ما يلي:
- عدة مصادر لعمليات الإدخال من معالج التطبيقات (AP)
- مصادر الإدخال ومكالمة صوتية
- مصادر إدخال الصوت ومعالج إشارات رقمية للصوت (DSP) ينفّذ عملية رصد الكلمة المفتاح باستهلاك منخفض للطاقة
النشاط المتزامن لعمليات بث إدخال AP
يستخدم إطار عمل الصوت ملف إعداد سياسة الصوت audio_policy_configuration.xml لتحديد عدد مصادر البث التي يمكن فتحها وتفعيلها في الوقت نفسه.
يجب أن يتيح طبقة تجريد الأجهزة الصوتية (HAL) مثيلاً واحدًا على الأقل من كل ملف تعريف إدخال (mixPort من الدور sink) مُدرَج في ملف الإعداد المفتوح والنشط.
اختيار الجهاز
عندما يتم ربط العديد من البرامج النشطة نفسها ببرنامج HAL لإدخال البيانات، يختار إطار العمل الجهاز المناسب لبرنامج إدخال البيانات هذا استنادًا إلى أولوية حالة الاستخدام.
عندما تكون عدّة مصادر إدخال نشطة، يمكن أن يكون لكل مصدر إدخال اختيار مختلف للأجهزة.
إذا كانت التكنولوجيا متوافقة، يُنصح بأن يسمح كل من طبقة تجريد الأجهزة الصوتية (HAL) والنظام الفرعي بتسجيل عمليات بث مختلفة من أجهزة مختلفة، مثل سماعة رأس متصلة بالبلوتوث وميكروفون مدمج.
في حال عدم التوافق (على سبيل المثال، إذا كان جهازان يتشاركان واجهة الصوت الرقمي نفسها أو الخلفية)، يجب أن يختار HAL للصوت البث الذي يتحكّم في اختيار الجهاز.
في هذه الحالة:
- يجب أن تكون الحالة الناتجة متسقة وأن توفّر خيار الجهاز نفسه عند تكرار السيناريو نفسه.
- عند انتهاء حالة التشغيل المتزامن، يجب توجيه مصدر البيانات النشط المتبقي إلى الجهاز الذي تم طلب البث عليه في البداية.
إذا تم تحديد ترتيب الأولوية من خلال طبقة تجريد الأجهزة الصوتية (HAL) بين حالات الاستخدام النشطة، اتّبِع الترتيب نفسه كما هو موضّح في source_priority() في frameworks/av/services/audiopolicy/common/include/policy.h.
اختيار المعالجة المُسبَقة
يمكن لإطار عمل الصوت طلب إجراء معالجة مسبقة على مجموعة بث واردة باستخدام طريقتَي addEffect() أو removeEffect() في طبقة HAL.
بالنسبة إلى المعالجة المسبقة على بث إدخال معيّن، لا يتيح إطار عمل الصوت سوى الإعدادات المتوافقة مع حالة الاستخدام النشطة ذات الأولوية الأعلى على بث الإدخال. ومع ذلك، قد يحدث بعض التداخل أثناء تفعيل حالات الاستخدام وإيقافها، ما يؤدي إلى تشغيل عمليتَين نشطتَين في الوقت نفسه (على سبيل المثال، مثيلان من ميزة إلغاء الصدى) على بث الإدخال نفسه. في هذه الحالة، يختار تنفيذ HAL الطلب الذي سيتم قبوله، ويتتبّع الطلبات النشطة ويعيد الحالة الصحيحة عند إيقاف أي من العمليتين.
عندما تكون عدّة عمليات بث نشطة في الوقت نفسه، قد يتم تنفيذ طلبات معالجة مسبقة مختلفة على عمليات بث مختلفة.
يجب أن تسمح عمليات تنفيذ طبقة تجريد الأجهزة (HAL) ونظام الصوت الفرعي بتطبيق معالجة مسبقة مختلفة على تدفقات مختلفة، حتى إذا كانت تشترك في جهاز الإدخال نفسه. أي أنّ المعالجة المسبقة يجب أن تتم بعد فصل تدفقات البيانات من مصدر الالتقاط الأساسي.
إذا لم يكن ذلك ممكنًا لأسباب فنية في نظام فرعي صوتي معيّن، يجب أن تطبّق طبقة تجريد الأجهزة الصوتية (HAL) قواعد الأولوية المشابهة لتلك الواردة في اختيار الجهاز.
إجراء مكالمة صوتية وتسجيلها في الوقت نفسه من نقطة الوصول
يمكن أن يتم التسجيل من نقطة الوصول أثناء مكالمة صوتية جارية. هذه الحالة ليست جديدة في نظام التشغيل Android 10، ولا ترتبط مباشرةً بميزة التسجيل المتزامن، ولكن من المفيد ذكر الإرشادات الخاصة بهذا السيناريو.
يجب توفير نوعَين مختلفَين من عمليات الالتقاط من نقطة الوصول أثناء المكالمة.
تسجيل بيانات الاستقبال والإرسال للمكالمات
يتم تسجيل بيانات الاستقبال والإرسال للمكالمة عند استخدام مصدر الصوت
AudioSource.VOICE_UPLINK أو AudioSource.VOICE_DOWNLINK، و/أو الجهاز
AudioDevice.IN_TELEPHONY_RX.
يجب أن تعرض طبقات تجريد الأجهزة (HAL) الصوتية ملف الإدخال الشخصي (mixPort من الدور sink)
مع مسار متاح من الجهاز AudioDevice.IN_TELEPHONY_RX.
عندما يتم ربط مكالمة (يكون وضع الصوت AudioMode.IN_CALL)، يجب أن يكون من الممكن الحصول على بث تسجيل نشط واحد على الأقل من الجهاز AudioDevice.IN_TELEPHONY_RX.
تسجيل الصوت من أجهزة الإدخال عندما تكون مكالمة نشطة
عندما تكون مكالمة نشطة (يكون وضع الصوت AudioMode.IN_CALL)، يجب أن يكون من الممكن فتح وتفعيل مصادر إدخال البيانات من التطبيق كما هو موضّح في القسم النشاط المتزامن لمصادر إدخال البيانات في التطبيق.
ومع ذلك، يجب أن تكون الأولوية لاختيار الجهاز والمعالجة المسبقة دائمًا لمكالمة الصوت في حال حدوث تعارض مع الطلبات من مصادر إدخال AP.
تسجيل متزامن من "معالج الإشارات الرقمية" و"معالج الصوت"
عندما يحتوي نظام الصوت الفرعي على معالج إشارات رقمية (DSP) يتيح استخدام سياق صوتي منخفض الطاقة أو وظائف رصد الكلمات المفتاحية، يجب أن يتيح التنفيذ إمكانية التسجيل المتزامن من معالج التطبيقات ومعالج الإشارات الرقمية للصوت.
ويشمل ذلك عملية الالتقاط التي تجريها منصة العرض والطلب خلال مرحلة الاكتشاف الأولي، وعملية الالتقاط التي يجريها جهاز نقطة الوصول مع AudioSource.HOTWORD بعد أن يتم تفعيل عملية الاكتشاف من خلال منصة العرض والطلب.
يجب أن ينعكس ذلك في علامة الالتقاط المتزامن التي يبلغ عنها HAL لمشغّل الصوت من خلال واصف التنفيذ: ISoundTriggerHw.Properties.concurrentCapture = true.
يجب أن يعرض HAL الصوتي أيضًا ملفًا شخصيًا خاصًا بإدخال البيانات لتسجيل الكلمات الرئيسية المحددة من خلال العلامة AudioInputFlag.HW_HOTWORD. يجب أن يتيح التنفيذ فتح عدد من عمليات البث وتفعيلها على هذا الملف الشخصي بما لا يقل عن عدد نماذج الصوت التي يمكن أن يتم تحميلها بشكل متزامن بواسطة طبقة تجريد الأجهزة (HAL) الخاصة بمشغّل الصوت.
يجب أن يكون من الممكن التسجيل من ملف الإدخال هذا أثناء تفعيل ملفات إدخال أخرى.
تأثير ذلك في عمليات تنفيذ "مساعد Google"
متطلبات استخدام البيانات وإعلام المستخدمين
بما أنّ الاستخدام المتزامن للميكروفون قد يؤدي إلى تسرُّب بيانات المستخدم الخاصة في حال إساءة استخدامه، يجب استيفاء الشروط والضمانات التالية في التطبيقات المحمَّلة مسبقًا التي تتطلّب الحصول على دور "مساعد Google".
- يجب ألا يتم نقل البيانات التي يتم جمعها من خلال الميكروفون خارج الجهاز إلا إذا كان المستخدم يتفاعل مع "مساعد Google". على سبيل المثال، بعد تفعيل الكلمة المحفّزة.
- يجب أن تقدّم التطبيقات التي تستمع بشكل متزامن إشارات مرئية للمستخدم بعد رصد الكلمة المحفّزة. يساعد ذلك المستخدمين في فهم أنّ المحادثات الإضافية ستتم من خلال تطبيق مختلف، مثل "مساعد Google".
- يجب أن يتمكّن المستخدمون من إيقاف الميكروفون أو مشغّلات "مساعد Google".
- عند تخزين التسجيلات الصوتية، يجب أن يتمكّن المستخدمون من الوصول إلى التسجيلات ومراجعتها وحذفها في أي وقت.
تحسينات وظيفية لنظام التشغيل Android 10
عدم حظر المساعدَين لبعضهما البعض
على الإصدار 9 من نظام التشغيل Android أو الإصدارات الأقدم، عندما يكون هناك مساعدان صوتيان يعملان دائمًا على الجهاز، يمكن لأحدهما فقط الاستماع إلى الكلمة المحفّزة. لذلك، كان من الضروري التبديل بين المساعدَين. في نظام التشغيل Android 10، يمكن أن يستمع "مساعد Google" التلقائي بشكل متزامن مع "مساعد Google" الآخر. ويؤدي ذلك إلى توفير تجربة أكثر سلاسة للمستخدمين مع كلا المساعدَين.
التطبيقات التي تبقي الميكروفون مفتوحًا
عندما تترك تطبيقات مثل Shazam أو Waze الميكروفون مفتوحًا، يمكن أن يظلّ "مساعد Google" التلقائي يستمع إلى الكلمة المفتاح.
بالنسبة إلى تطبيقات "مساعد Google" غير التلقائية، لن يطرأ أي تغيير على السلوك في نظام التشغيل Android 10.
مثال على تنفيذ طبقة تجريد الأجهزة (HAL) الخاصة بالصوت
يمكن العثور على مثال على تنفيذ طبقة تجريد الأجهزة الصوتية (HAL) المتوافقة مع الإرشادات الواردة في هذا المستند في AOSP.