لایه انتزاعی سخت افزار صوتی اندروید (HAL) APIهای فریمورک سطح بالاتر و مخصوص صدا در android.media را به درایور صوتی و سخت افزار زیرین متصل می کند. این بخش شامل دستورالعمل های اجرایی و نکاتی برای بهبود عملکرد است.
معماری صوتی اندروید نحوه اجرای عملکرد صوتی را تعریف می کند و به کد منبع مربوطه درگیر در پیاده سازی اشاره می کند.
- چارچوب برنامه
- چارچوب برنامه شامل کد برنامه است که از 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 است.