
لایه انتزاعی سخت افزار صوتی Android (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 شما ارتباط برقرار می کند. می توانید از Advanced Linux Sound Architecture (ALSA) ، Open Sound System (OSS) یا درایور سفارشی (HAL درایور-اگنوتیک) استفاده کنید.
توجه : اگر از ALSA استفاده می کنید ، به دلیل مجوزهای سازگار با آن ،
external/tinyalsa
برای بخش کاربر درایور توصیه می کنیم (کتابخانه استاندارد حالت کاربر دارای مجوز GPL است). - صوتی بومی Android مبتنی بر Open SL ES (نشان داده نشده است)
- این API به عنوان بخشی از Android NDK در معرض دید قرار دارد و در همان سطح معماری android.media است .