سمعی

آیکون HAL صوتی اندروید

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

معماری صوتی اندروید، نحوه پیاده‌سازی قابلیت‌های صوتی را تعریف می‌کند و به کد منبع مربوطه که در پیاده‌سازی دخیل است، اشاره دارد.

معماری صوتی

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

چارچوب برنامه
چارچوب برنامه شامل کد برنامه است که از APIهای android.media برای تعامل با سخت‌افزار صوتی استفاده می‌کند. در داخل، این کد کلاس‌های JNI glue مربوطه را فراخوانی می‌کند تا به کد بومی که با سخت‌افزار صوتی تعامل دارد، دسترسی پیدا کند.
جی ان آی
کد JNI مرتبط با android.media، کد بومی سطح پایین‌تر را برای دسترسی به سخت‌افزار صوتی فراخوانی می‌کند. JNI در frameworks/base/core/jni/ و frameworks/base/media/jni قرار دارد.
چارچوب بومی
فریم‌ورک native معادل native برای پکیج android.media ارائه می‌دهد که پروکسی‌های IPC مربوط به Binder را برای دسترسی به سرویس‌های مخصوص صدا در سرور رسانه فراخوانی می‌کند. کد فریم‌ورک native در frameworks/av/media/libmedia قرار دارد.
IPC بایندر
پروکسی‌های IPC بایندر، ارتباط بین مرزهای فرآیند را تسهیل می‌کنند. پروکسی‌ها در frameworks/av/media/libmedia قرار دارند و با حرف "I" شروع می‌شوند.
سرور رسانه
سرور رسانه شامل سرویس‌های صوتی است که کد واقعی هستند که با پیاده‌سازی‌های HAL شما تعامل دارند. سرور رسانه در frameworks/av/services/audioflinger قرار دارد.
هال
HAL رابط استانداردی را تعریف می‌کند که سرویس‌های صوتی به آن فراخوانی می‌شوند و شما باید آن را برای عملکرد صحیح سخت‌افزار صوتی خود پیاده‌سازی کنید. برای جزئیات بیشتر، به رابط صوتی HAL و توضیحات موجود در فایل‌های *.hal از فهرست نسخه HAL مربوطه مراجعه کنید.
درایور هسته
درایور صوتی با سخت‌افزار و پیاده‌سازی HAL شما تعامل دارد. می‌توانید از معماری صدای پیشرفته لینوکس (ALSA)، سیستم صدای باز (OSS) یا یک درایور سفارشی (HAL مستقل از درایور است) استفاده کنید.

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

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