التقاط متزامن

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

يطبق إطار عمل الصوت السياسة التي تسمح فقط لبعض التطبيقات المميزة بالتقاطها بشكل متزامن مع التطبيقات العادية.

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

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

متطلبات التحريات المسبقة عن العمالء

راجع CDD للحصول على متطلبات دعم الالتقاط المتزامن.

التقاط المواقف من الصوت HAL

يمكن أن ينتج عن سيناريو الالتقاط المتزامن مواقف مختلفة من حيث عدد تدفقات الإدخال النشط أو اختيار جهاز الإدخال أو تكوين المعالجة المسبقة.

يمكن أن يحدث التزامن بين ما يلي:

  • عدة تدفقات إدخال من معالج التطبيق (AP)
  • تيارات الإدخال ومكالمة صوتية
  • تدفقات الإدخال و DSP الصوتي الذي ينفذ اكتشاف الكلمة المهمة منخفضة الطاقة

النشاط المتزامن لتدفقات إدخال AP

يتم استخدام ملف تكوين السياسة الصوتية audio_policy_configuration.xml بواسطة إطار عمل الصوت لتحديد عدد تدفقات الإدخال التي يمكن فتحها audio_policy_configuration.xml وقت واحد.

كحد أدنى، يجب أن HAL الصوت دعم حالة واحدة على الأقل من كل ملف الإدخال ( mixPort دور sink ) المذكورة في ملف التكوين مفتوحة ونشطة.

اختيار الجهاز

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

عندما تكون عدة تدفقات إدخال نشطة ، يمكن أن يكون لكل دفق اختيار جهاز مختلف.

إذا كانت التقنية متوافقة ، فمن المستحسن أن يسمح HAL الصوتي والنظام الفرعي بالتقاط تدفقات مختلفة من أجهزة مختلفة ، مثل سماعة رأس Bluetooth وميكروفون مدمج.

إذا كان هناك عدم توافق (على سبيل المثال ، يشترك جهازان في نفس واجهة الصوت الرقمية أو النهاية الخلفية) ، يجب أن يختار HAL الصوت الذي يتحكم في تحديد الجهاز.

في هذه الحالة:

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

إذا تم تحديد ترتيب الأولوية بواسطة الصوت HAL بين حالات الاستخدام النشط ، فاتبع نفس الترتيب الموجود في source_priority() في frameworks/av/services/audiopolicy/common/include/policy.h

اختيار المعالجة المسبقة

يمكن أن يطلب إطار عمل الصوت معالجة addEffect() على دفق الإدخال باستخدام addEffect() أو removeEffect() HAL.

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

عندما تكون العديد من تدفقات الالتقاط نشطة في وقت واحد ، فقد يتم تشغيل طلبات معالجة مسبقة مختلفة على تدفقات مختلفة.

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

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

مكالمة صوتية متزامنة والتقاطها من AP

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

هناك حاجة إلى نوعين مختلفين من الالتقاط من نقطة الوصول أثناء المكالمة.

التقاط مكالمة RX و TX

يتم تشغيل التقاط مكالمة RX و TX باستخدام مصدر الصوت AudioSource.VOICE_UPLINK أو AudioSource.VOICE_DOWNLINK و / أو AudioDevice.IN_TELEPHONY_RX .

يجب طبقة تجريد الصوت تعرض الى البيانات الشخصية للمدخلات ( mixPort دور sink ) مع الطرق المتاحة من جهاز AudioDevice.IN_TELEPHONY_RX .

عند توصيل مكالمة (وضع الصوت هو AudioMode.IN_CALL ) ، فمن الممكن أن يكون لديك دفق التقاط نشط واحد على الأقل من جهاز AudioDevice.IN_TELEPHONY_RX .

الالتقاط من أجهزة الإدخال عندما تكون المكالمة نشطة

عندما تكون المكالمة نشطة (وضع الصوت هو AudioMode.IN_CALL ) ، يجب أن يكون من الممكن فتح وتنشيط تدفقات الإدخال من AP كما هو محدد في القسم النشاط المتزامن لتدفقات إدخال AP .

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

التقاط متزامن من DSP و AP

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

يجب أن ينعكس ذلك من خلال علامة الالتقاط المتزامنة التي تم الإبلاغ عنها بواسطة مشغل الصوت HAL عبر واصف التنفيذ: ISoundTriggerHw.Properties.concurrentCapture = true .

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

يجب أن يكون الالتقاط من ملف تعريف الإدخال هذا ممكنًا أثناء تنشيط ملفات تعريف الإدخال الأخرى.

التضمين لتطبيقات المساعد

متطلبات استخدام البيانات وإخطار المستخدم

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

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

تحسينات وظيفية لنظام Android 10

المساعدون لا يمنعون بعضهم البعض

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

تطبيقات تحمل الميكروفون مفتوحًا

عندما تحتفظ تطبيقات مثل Shazam أو Waze بالميكروفون مفتوحًا ، لا يزال بإمكان المساعد الافتراضي الاستماع إلى الكلمة المهمة.

بالنسبة لتطبيقات المساعد غير الافتراضية ، لا يوجد تغيير في سلوك Android 10.

نموذج تنفيذ HAL الصوتي

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