سمعی

نماد Android Audio HAL

لایه انتزاعی سخت افزار صوتی اندروید (HAL) APIهای فریمورک سطح بالاتر و مخصوص صدا در android.media را به درایور صوتی و سخت افزار زیرین متصل می کند. این بخش شامل دستورالعمل های اجرایی و نکاتی برای بهبود عملکرد است.

معماری صوتی اندروید نحوه اجرای عملکرد صوتی را تعریف می کند و به کد منبع مربوطه درگیر در پیاده سازی اشاره می کند.

معماری صوتی

شکل 1. معماری صوتی اندروید

چارچوب برنامه
چارچوب برنامه شامل کد برنامه است که از API های 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
پروکسی‌های IPC بایندر ارتباط را بر روی مرزهای فرآیند تسهیل می‌کنند. پراکسی ها در frameworks/av/media/libmedia قرار دارند و با حرف "I" شروع می شوند.
سرور رسانه
سرور رسانه شامل خدمات صوتی است که کد واقعی با اجرای HAL شما در تعامل است. سرور رسانه در frameworks/av/services/audioflinger قرار دارد.
HAL
HAL رابط استانداردی را تعریف می‌کند که سرویس‌های صوتی با آن تماس می‌گیرند و شما باید برای عملکرد صحیح سخت‌افزار صوتی خود پیاده‌سازی کنید. برای جزئیات بیشتر، به رابط صوتی HAL و نظرات در فایل های *.hal دایرکتوری نسخه HAL مربوطه مراجعه کنید.
درایور کرنل
درایور صوتی با سخت افزار و اجرای HAL شما تعامل دارد. می‌توانید از معماری صوتی پیشرفته لینوکس (ALSA)، سیستم صوتی باز (OSS) یا یک درایور سفارشی (HAL به عنوان درایور آگنوستیک) استفاده کنید.

توجه : اگر از ALSA استفاده می کنید، ما external/tinyalsa برای بخش کاربر درایور به دلیل مجوز سازگار آن توصیه می کنیم (کتابخانه حالت کاربر استاندارد دارای مجوز GPL است).

صدای بومی اندروید مبتنی بر Open SL ES (نشان داده نشده)
این API به عنوان بخشی از Android NDK در معرض دید قرار می گیرد و در همان سطح معماری android.media است.