سمعی

نماد Android Audio HAL

لایه انتزاعی سخت افزار صوتی 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 است .