صوتی

نماد Android Audio HAL

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

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

معماری صوتی

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

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

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