الصوت

رمز Android Audio HAL

تعمل طبقة تجريد أجهزة الصوت (HAL) لنظام Android على توصيل واجهات برمجة التطبيقات (APIs) ذات المستوى الأعلى والخاصة بالصوت في android.media إلى برنامج تشغيل الصوت الأساسي والأجهزة. يتضمن هذا القسم تعليمات التنفيذ ونصائح لتحسين الأداء.

تحدد بنية الصوت في Android كيفية تنفيذ وظائف الصوت وتشير إلى كود المصدر ذي الصلة المتضمن في التنفيذ.

الهندسة الصوتية

الشكل 1. بنية الصوت لنظام Android

إطار تطبيق
يتضمن إطار عمل التطبيق رمز التطبيق، الذي يستخدم واجهات برمجة التطبيقات android.media للتفاعل مع أجهزة الصوت. داخليًا، يستدعي هذا الكود فئات الغراء JNI المقابلة للوصول إلى الكود الأصلي الذي يتفاعل مع أجهزة الصوت.
JNI
يستدعي كود JNI المرتبط بـ android.media الكود الأصلي ذو المستوى الأدنى للوصول إلى أجهزة الصوت. يقع JNI في frameworks/base/core/jni/ و frameworks/base/media/jni .
الإطار الأصلي
يوفر إطار العمل الأصلي مكافئًا أصليًا لحزمة android.media ، حيث يستدعي وكلاء Binder IPC للوصول إلى الخدمات الصوتية المحددة لخادم الوسائط. يوجد كود إطار العمل الأصلي في frameworks/av/media/libmedia .
الموثق IPC
تعمل وكلاء Binder IPC على تسهيل الاتصال عبر حدود العملية. توجد الوكلاء في frameworks/av/media/libmedia وتبدأ بالحرف "I".
وسائل الاعلام الخادم
يحتوي خادم الوسائط على خدمات صوتية، وهي الكود الفعلي الذي يتفاعل مع تطبيقات HAL الخاصة بك. يقع خادم الوسائط في frameworks/av/services/audioflinger .
هال
تحدد HAL الواجهة القياسية التي تتصل بها الخدمات الصوتية والتي يجب عليك تنفيذها حتى يعمل جهاز الصوت الخاص بك بشكل صحيح. لمزيد من التفاصيل، راجع واجهة HAL الصوتية والتعليقات في ملفات *.hal الخاصة بدليل إصدار HAL المقابل.
سائق النواة
يتفاعل برنامج تشغيل الصوت مع أجهزتك وتنفيذ HAL. يمكنك استخدام بنية صوت Linux المتقدمة (ALSA) أو نظام الصوت المفتوح (OSS) أو برنامج تشغيل مخصص (HAL لا يعرف برنامج التشغيل).

ملاحظة : إذا كنت تستخدم ALSA، فإننا نوصي بـ external/tinyalsa لجزء المستخدم من برنامج التشغيل بسبب ترخيصه المتوافق (مكتبة وضع المستخدم القياسية مرخصة من GPL).

صوت Android الأصلي استنادًا إلى Open SL ES (غير موضح)
يتم عرض واجهة برمجة التطبيقات هذه كجزء من Android NDK وهي على نفس مستوى البنية مثل android.media .