الصوت

رمز Android Audio HAL

تعمل طبقة تجريد الأجهزة (HAL) الخاصة بالصوت في نظام التشغيل Android على ربط واجهات برمجة التطبيقات (API) الخاصة بإطار عمل الصوت في 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.
Binder IPC
تسهّل وكلاء Binder IPC التواصل عبر حدود العمليات. تتوفّر وكالات في frameworks/av/media/libmedia وتبدأ بالحرف "I".
خادم الوسائط
يحتوي خادم الوسائط على خدمات صوتية، وهي الرمز الفعلي الذي يتفاعل مع عمليات تنفيذ طبقة تجريد الأجهزة (HAL). يقع خادم الوسائط في frameworks/av/services/audioflinger.
HAL
تحدّد طبقة HAL الواجهة العادية التي تستدعيها خدمات الصوت والتي يجب تنفيذها لكي تعمل أجهزة الصوت بشكل صحيح. لمزيد من التفاصيل، يُرجى الرجوع إلى واجهة HAL الخاصة بالصوت والتعليقات في ملفات *.hal الخاصة بدليل إصدار HAL ذي الصلة.
برنامج تشغيل النواة
يتفاعل برنامج تشغيل الصوت مع الأجهزة وتنفيذ طبقة تجريد الأجهزة (HAL). يمكنك استخدام Advanced Linux Sound Architecture (ALSA) أو Open Sound System (OSS) أو برنامج تشغيل مخصّص (طبقة تجريد الأجهزة لا تعتمد على برنامج التشغيل).

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

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