تربط طبقة تجريد الأجهزة (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) أو برنامج تشغيل مخصّص (طبقة تجريد الأجهزة (HAL) لا تعتمد على برنامج التشغيل).
ملاحظة: إذا كنت تستخدم ALSA، ننصحك باستخدام
external/tinyalsaلجزء برنامج التشغيل الخاص بالمستخدم بسبب الترخيص المتوافق (مكتبة وضع المستخدم العادية مرخّصة بموجب رخصة جنو العمومية). - الصوت الأصلي في Android المستند إلى Open SL ES (غير موضّح)
- يتم عرض واجهة برمجة التطبيقات هذه كجزء من Android NDK وتقع على مستوى البنية نفسه مثل android.media.