يعمل Android 10 على تحسين تجربة المستخدم التي تتطلب إجراء أكثر من التقاط صوتي نشط في وقت واحد، على سبيل المثال، إذا كان المستخدم يريد التحكم في مكالمة VoIP أو مسجل فيديو باستخدام الأوامر الصوتية التي توفرها خدمة إمكانية الوصول.
ينفذ إطار العمل الصوتي السياسة التي تسمح فقط لبعض التطبيقات المميزة بالتقاط الصور بشكل متزامن مع التطبيقات العادية.
يتم تنفيذ سياسة التزامن عن طريق إسكات الصوت الذي تم التقاطه بدلاً من منع التطبيق من بدء الالتقاط. يسمح هذا لإطار العمل بمعالجة التغييرات في عدد وأنواع حالات استخدام الالتقاط النشط ديناميكيًا، دون منع التطبيق من بدء الالتقاط في حالة حيث يمكنه استرداد الوصول الكامل إلى الميكروفون بعد انتهاء تطبيق آخر من الالتقاط.
والنتيجة بالنسبة لـ HAL الصوتي والنظام الفرعي الصوتي هي أنه يجب عليهما دعم العديد من تدفقات الإدخال النشطة في وقت واحد، حتى لو كان في بعض الحالات، يوفر دفق واحد فقط صوتًا غير صامت لعميل نشط.
متطلبات CDD
راجع CDD للتعرف على متطلبات دعم الالتقاط المتزامن.
التقاط المواقف من الصوت HAL
يمكن أن يؤدي سيناريو الالتقاط المتزامن إلى مواقف مختلفة من حيث عدد تدفقات الإدخال النشطة أو اختيار جهاز الإدخال أو تكوين المعالجة المسبقة.
يمكن أن يحدث التزامن بين ما يلي:
- العديد من تدفقات الإدخال من معالج التطبيق (AP)
- تدفقات الإدخال ومكالمة صوتية
- يقوم تدفق الإدخال وDSP الصوتي بتنفيذ اكتشاف الكلمة المهمة منخفضة الطاقة
النشاط المتزامن لتدفقات إدخال AP
يتم استخدام ملف تكوين سياسة الصوت audio_policy_configuration.xml
بواسطة إطار عمل الصوت لتحديد عدد تدفقات الإدخال التي يمكن فتحها وتنشيطها في وقت واحد.
كحد أدنى، يجب أن تدعم طبقة تجريد الأجهزة (HAL) الصوتية مثيلًا واحدًا على الأقل لكل ملف تعريف إدخال (منفذ mixPort
sink
الأدوار) المدرج في ملف التكوين المفتوح والنشط .
اختيار الجهاز
عندما يتم إرفاق العديد من العملاء النشطين بنفس دفق إدخال HAL، يحدد إطار العمل الجهاز المناسب لدفق الإدخال هذا بناءً على أولوية حالة الاستخدام.
عندما تكون عدة تدفقات إدخال نشطة، يمكن أن يكون لكل تدفق اختيار جهاز مختلف.
إذا كانت التقنية متوافقة، فمن المستحسن أن يسمح نظام HAL الصوتي والنظام الفرعي بالتقاط تدفقات مختلفة من أجهزة مختلفة، مثل سماعة رأس Bluetooth والميكروفون المدمج.
إذا كان هناك عدم توافق (على سبيل المثال، يشترك جهازان في نفس واجهة الصوت الرقمية أو الواجهة الخلفية)، فيجب أن يختار HAL الصوتي أي تدفق يتحكم في اختيار الجهاز.
في هذه الحالة:
- يجب أن تكون الحالة الناتجة متسقة وتقدم نفس اختيار الجهاز عند تكرار نفس السيناريو.
- عندما تنتهي حالة التزامن، يجب توجيه الدفق النشط المتبقي إلى الجهاز المطلوب في البداية على هذا الدفق.
إذا تم تحديد ترتيب الأولوية بواسطة طبقة تصديق الصوت (HAL) الصوتية بين حالات الاستخدام النشط، فاتبع نفس الترتيب الموجود في source_priority()
في frameworks/av/services/audiopolicy/common/include/policy.h
اختيار المعالجة المسبقة
يمكن لإطار الصوت أن يطلب المعالجة المسبقة على دفق الإدخال باستخدام أساليب HAL addEffect()
أو removeEffect()
.
بالنسبة للمعالجة المسبقة على تدفق إدخال معين، يتيح إطار الصوت فقط التكوين المطابق لحالة الاستخدام النشط ذات الأولوية العليا على تدفق الإدخال. ومع ذلك، قد يكون هناك بعض التداخل أثناء تنشيط حالة الاستخدام وإلغاء التنشيط، مما يتسبب في تشغيل عمليتين نشطتين متزامنتين (على سبيل المثال، مثيلان لإلغاء الصدى) على نفس تدفق الإدخال. في هذه الحالة، يختار تنفيذ HAL الطلب الذي سيتم قبوله؛ فهو يتتبع الطلبات النشطة ويستعيد الحالة الصحيحة عند تعطيل أي من العمليتين.
عندما تكون عدة تدفقات التقاط نشطة في وقت واحد، قد يتم تشغيل طلبات المعالجة المسبقة المختلفة على تدفقات مختلفة.
يجب أن تسمح تطبيقات HAL والنظام الفرعي الصوتي بتطبيق معالجة مسبقة مختلفة على تدفقات مختلفة، حتى لو كانت تشترك في نفس جهاز الإدخال. أي أنه يجب تطبيق المعالجة المسبقة بعد إزالة مزج التدفقات من مصدر الالتقاط الأساسي.
إذا لم يكن ذلك ممكنًا لأسباب فنية على نظام صوتي فرعي معين، فيجب أن تطبق طبقة تصال الصوت (HAL) قواعد الأولوية المشابهة لتلك المدرجة في تحديد الجهاز .
مكالمة صوتية متزامنة والتقاط من AP
يمكن أن يتم الالتقاط من نقطة الوصول عندما تكون المكالمة الصوتية نشطة. هذا الوضع ليس جديدًا في Android 10 ولا يرتبط بشكل مباشر بميزة الالتقاط المتزامن، ولكن من المفيد ذكر الإرشادات الخاصة بهذا السيناريو.
هناك حاجة إلى نوعين مختلفين من الالتقاط من نقطة الوصول أثناء المكالمة.
التقاط مكالمة RX وTX
يتم تشغيل التقاط المكالمة RX وTX عن طريق استخدام مصدر الصوت 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 وAP
عندما يحتوي النظام الفرعي الصوتي على DSP يدعم سياق الصوت منخفض الطاقة أو وظائف الكشف عن الكلمات المهمة، يجب أن يدعم التنفيذ الالتقاط المتزامن من AP وDSP الصوتي. يتضمن ذلك كلا من الالتقاط بواسطة معالج الإشارة الرقمية أثناء مرحلة الاكتشاف الأولي والالتقاط بواسطة نقطة الوصول باستخدام AudioSource.HOTWORD
بعد تشغيل الاكتشاف بواسطة معالج الإشارة الرقمية.
يجب أن ينعكس ذلك من خلال علامة الالتقاط المتزامنة التي تم الإبلاغ عنها بواسطة مشغل الصوت HAL عبر واصف التنفيذ: ISoundTriggerHw.Properties.concurrentCapture = true
.
يجب أن تعرض طبقة توصيف الأجهزة (HAL) الصوتية أيضًا ملف تعريف خاصًا بالتقاط الكلمة المهمة المحددة بواسطة العلامة AudioInputFlag.HW_HOTWORD
وإدخال ملف تعريف خاص بها. يجب أن يدعم التنفيذ فتح وتنشيط عدد من التدفقات في ملف التعريف هذا يساوي على الأقل عدد نماذج الصوت التي يمكن تحميلها بشكل متزامن بواسطة مشغل الصوت HAL.
يجب أن يكون الالتقاط من ملف تعريف الإدخال هذا ممكنًا أثناء تنشيط ملفات تعريف الإدخال الأخرى.
الآثار المترتبة على تطبيقات المساعد
متطلبات استخدام البيانات وإخطار المستخدم
نظرًا لأن الاستخدام المتزامن للميكروفون، في حالة إساءة استخدامه، يمكن أن يؤدي إلى تسرب بيانات المستخدم الخاصة، فإننا نحتاج إلى تطبيق الشروط والضمانات التالية على التطبيقات المميزة المحملة مسبقًا والتي تطلب الاحتفاظ بدور المساعد.
- يجب ألا تخرج البيانات المجمعة عبر الميكروفون من الجهاز إلا إذا كان المستخدم يتفاعل مع المساعد. على سبيل المثال، بعد تشغيل الكلمة المهمة.
- يجب أن توفر التطبيقات التي تستمع بشكل متزامن إشارات مرئية للمستخدم بعد اكتشاف الكلمة المهمة. يساعد هذا المستخدمين على فهم أن المحادثات الإضافية ستتم عبر تطبيق مختلف، مثل المساعد.
- يجب أن يكون لدى المستخدمين القدرة على إيقاف تشغيل الميكروفون أو مشغلات المساعد.
- عند تخزين التسجيلات الصوتية، يجب أن يكون لدى المستخدمين القدرة على الوصول إلى التسجيلات ومراجعتها وحذفها في أي وقت.
تحسينات وظيفية لنظام Android 10
المساعدون لا يحظرون بعضهم البعض
في نظام التشغيل Android 9 أو الإصدارات الأقدم، عندما يكون هناك مساعدان يعملان دائمًا على الجهاز، يمكن أن يستمع أحدهما فقط إلى الكلمة المهمة الخاصة به. ومن ثم، كانت هناك حاجة للتبديل بين المساعدين. في Android 10، يمكن للمساعد الافتراضي الاستماع بشكل متزامن مع المساعد الآخر. وينتج عن هذا تجربة أكثر سلاسة للمستخدمين الذين لديهم كلا المساعدين.
التطبيقات التي تبقي الميكروفون مفتوحًا
عندما تبقي تطبيقات مثل Shazam أو Waze الميكروفون مفتوحًا، يظل بإمكان المساعد الافتراضي الاستماع إلى الكلمة المهمة.
بالنسبة لتطبيقات المساعد غير الافتراضية، لا يوجد أي تغيير في السلوك لنظام Android 10.
نموذج لتطبيق HAL الصوتي
يمكن العثور على مثال لتطبيق HAL الصوتي الذي يتوافق مع الإرشادات الواردة في هذا المستند في AOSP .