يُحسِّن نظام التشغيل Android 10 تجربة المستخدم التي تتطلّب إجراء أكثر من عملية تسجيل صوت نشِط واحدة في الوقت نفسه، على سبيل المثال، إذا أراد المستخدم التحكّم في مكالمة Voice over IP أو مسجل فيديو باستخدام طلبات صوتية تقدّمها خدمة تسهيل الاستخدام.
ينفِّذ إطار العمل الصوتي السياسة التي تسمح فقط لبعض التطبيقات المميّزة بتسجيل الصوت بشكل متزامن مع التطبيقات العادية.
يتم تنفيذ سياسة التزامن عن طريق كتم صوت الصوت الذي تم تسجيله بدلاً من منع أحد التطبيقات من بدء الالتقاط. يتيح ذلك للإطار التعامل بشكل ديناميكي مع التغييرات في عدد حالات استخدام ميزة "التسجيل النشط" وأنواعها، بدون منع أي تطبيق من بدء التسجيل في حال تمكّنه من استعادة إذن الوصول الكامل إلى الميكروفون بعد أن انتهى تطبيق آخر من التسجيل.
نتيجةً لذلك، يجب أن يتيح كلّ من HAL للصوت والنظام الفرعي للصوت إمكانية بث عدة Streams نشطة للدخل في الوقت نفسه، حتى إذا كان هناك بث واحد فقط يقدّم صوتًا غير صامت لجهاز العميل النشط في بعض الحالات.
متطلبات CDD
يُرجى الاطّلاع على CDD للاطّلاع على متطلبات إتاحة الالتقاط المتزامن.
تسجيل المواقف من HAL الصوتي
يمكن أن يؤدي سيناريو الالتقاط المتزامن إلى حالات مختلفة من حيث عدد مجريات البث النشط للإدخال أو اختيار جهاز الإدخال أو إعدادات المعالجة المسبقة.
يمكن أن تحدث المهام المتزامنة بين ما يلي:
- عدة مصادر بيانات من معالج التطبيقات (AP)
- إدخال مجموعات البث ومكالمة صوتية
- مصادر الإدخال ووحدة معالجة إشارات رقمية للصوت التي تُنفِّذ ميزة رصد الكلمات الرئيسية المفتاحية ذات الطاقة المنخفضة
النشاط المتزامن لمصادر إدخال AP
يستخدم إطار عمل audio_policy_configuration.xml
ملف إعدادات سياسة الصوت لتحديد عدد مصادر الإدخال التي يمكن فتحها وتفعيلها في الوقت نفسه.
يجب أن يتيح فلتر HAL الصوتي على الأقل مثيلاً واحدًا على الأقل لكل ملف شخصي للإدخال (mixPort
من الدور sink
) مدرَج في ملف الإعداد المفتوح والنشط.
اختيار الجهاز
عندما يتم ربط عدة عملاء نشطين ببث إدخال HAL نفسه، يختار الإطار العمل الجهاز المناسب لبث الإدخال هذا استنادًا إلى أولوية حالة الاستخدام.
عندما تكون عدة مصادر إدخال نشطة، يمكن أن يتضمّن كل مصدر إدخال خيارات مختلفة لتحديد الأجهزة.
إذا كانت التكنولوجيا متوافقة، يُنصح بأن يسمح واجهة HAL والنظام الفرعي للصوت بتسجيل مصادر مختلفة من أجهزة مختلفة، مثل سماعة رأس بلوتوث وميكروفون مدمج.
في حال حدوث تعارض (على سبيل المثال، يتشارك جهازان واجهة الصوت الرقمية أو الخلفية نفسها)، يجب أن يختار HAL للصوت البث الذي يتحكّم في اختيار الجهاز.
وفي هذه الحالة:
- يجب أن تكون الحالة الناتجة متسقة وأن تقدّم خيار الجهاز نفسه عند تكرار السيناريو نفسه.
- عند انتهاء حالة الازدواجية، يجب توجيه البث النشط المتبقّي إلى الجهاز الذي تم طلبه في البداية في هذا البث.
إذا تم تحديد ترتيب الأولوية من خلال طبقة تجريد الأجهزة (HAL) الصوتية بين حالات الاستخدام النشطة، يُرجى اتّباع الترتيب نفسه الوارد في source_priority()
على
frameworks/av/services/audiopolicy/common/include/policy.h
.
اختيار المعالجة المسبقة
يمكن أن يطلب إطار العمل الصوتي إجراء معالجة مسبقة على بث الإدخال باستخدام methodsaddEffect()
أو 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.
ومع ذلك، يجب أن تكون الأولوية لاختيار الجهاز والمعالجة المسبقة مستندة دائمًا إلى طلب voice call في حال حدوث تعارض مع الطلبات الواردة من مصادر إدخال AP.
التقاط متزامن من DSP وAP
عندما يحتوي النظام الفرعي للصوت على وحدة معالجة إشارة رقمية (DSP) تتوافق مع وظائف رصد الكلمات الرئيسية أو سياق الصوت المنخفض الطاقة، يجب أن يتيح التنفيذ التسجيل المتزامن من نقطة الوصول ووحدة معالجة إشارة الصوت الرقمية.
ويشمل ذلك كلّ من الالتقاط بواسطة وحدة معالجة الإشارات الرقمية (DSP) أثناء مرحلة الكشف الأولي والالتقاط بواسطة نقطة الوصول
مع AudioSource.HOTWORD
بعد بدء الكشف بواسطة وحدة معالجة الإشارات الرقمية (DSP).
يجب أن تظهر هذه العلامة من خلال علامة الالتقاط المتزامنة التي تم الإبلاغ عنها بواسطة عامل تشغيل الصوت HAL عبر واصف التنفيذ: ISoundTriggerHw.Properties.concurrentCapture = true
.
يجب أيضًا أن تعرض طبقة تجريد الأجهزة (HAL) الصوتية الملف الشخصي الخاص بتسجيل الكلمة المفتاح AudioInputFlag.HW_HOTWORD
وأن يتم إدخاله في الملف الشخصي. يجب أن يتيح التنفيذ فتح و
تفعيل عدد من مصادر البث في هذا الملف الشخصي يساوي على الأقل عدد نماذج الصوت التي
يمكن تحميلها بشكل متزامن من خلال HAL الخاص بتشغيل الصوت.
من المفترض أن يكون الالتقاط من ملف الإدخال هذا ممكنًا أثناء تفعيل الملفات الشخصية للإدخال الأخرى.
الآثار المترتبة على عمليات تنفيذ "مساعد Google"
متطلبات استخدام البيانات وإشعار المستخدمين
بما أنّ استخدام الميكروفون بشكل متزامن يمكن أن يؤدي إلى تسرُّب بيانات المستخدم الخاصة في حال إساءة استخدامه، نحتاج إلى تطبيق الشروط والضمانات التالية على التطبيقات المُحمَّلة مسبقًا والممنوحة امتيازات والتي تطلب الحصول على دور "مساعد Google".
- يجب ألا تغادر البيانات التي يتم جمعها من خلال الميكروفون الجهاز ما لم يكن المستخدم يتفاعل مع "مساعد Google". على سبيل المثال، بعد تنشيط الكلمة الرئيسية.
- يجب أن تقدّم التطبيقات التي تستمع إلى الطلبات في الوقت نفسه إشارات مرئية للمستخدم بعد رصد الكلمة المفتاح. يساعد ذلك المستخدمين في فهم أنّه سيتم نقل المزيد من المحادثات إلى تطبيق مختلف، مثل "مساعد Google".
- يجب أن يتمكّن المستخدمون من إيقاف الميكروفون أو تشغيل "مساعد Google".
- عند تخزين التسجيلات الصوتية، يجب أن يتمكّن المستخدمون من الوصول إلى التسجيلات ومراجعتها و حذفها في أي وقت.
تحسينات على الوظائف في Android 10
عدم حظر المساعدين لبعضهم
في نظام التشغيل Android 9 أو الإصدارات الأقدم، عندما يكون هناك مساعدان قيد التفعيل دائمًا على الجهاز، يمكن أن يستمع أحدهما فقط إلى الكلمة المفتاح. لذلك، كان من الضروري التبديل بين "مساعد Google" و"مساعد Google للأعمال". في نظام التشغيل Android 10، يمكن أن يستمع "مساعد Google" التلقائي بشكل متزامن مع "مساعد Google" الآخر. ويؤدي ذلك إلى تقديم تجربة أكثر سلاسة للمستخدمين الذين يستخدمون كلا المساعدَين.
التطبيقات التي تبقي الميكروفون مفتوحًا
عندما تمسك تطبيقات مثل Shazam أو Waze الميكروفون مفتوحًا، سيظل "مساعد Google" التلقائي يستمع إلى الكلمة المفتاح.
بالنسبة إلى التطبيقات غير التلقائية في "مساعد Google"، لن تتغيّر طريقة عملها في نظام التشغيل Android 10.
مثال على تنفيذ HAL للصوت
يمكن العثور على مثال لتنفيذ HAL للصوت متوافق مع الإرشادات الواردة في هذا المستند في AOSP.