از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
سمعی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.

لایه انتزاعی سخت افزار صوتی اندروید (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 مربوطه مراجعه کنید. - درایور کرنل
- درایور صوتی با سخت افزار و اجرای HAL شما تعامل دارد. میتوانید از معماری صوتی پیشرفته لینوکس (ALSA)، سیستم صوتی باز (OSS) یا یک درایور سفارشی (HAL به عنوان درایور آگنوستیک) استفاده کنید.
توجه : اگر از ALSA استفاده می کنید، ما external/tinyalsa
برای بخش کاربر درایور به دلیل مجوز سازگار آن توصیه می کنیم (کتابخانه حالت کاربر استاندارد دارای مجوز GPL است).
- صدای بومی اندروید مبتنی بر Open SL ES (نشان داده نشده)
- این API به عنوان بخشی از Android NDK در معرض دید قرار می گیرد و در همان سطح معماری android.media است.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Audio\n\nAndroid's audio Hardware Abstraction Layer (HAL) connects the higher-level,\naudio-specific framework APIs in [android.media](http://developer.android.com/reference/android/media/package-summary.html) to the underlying audio driver and\nhardware. This section includes implementation instructions and tips for\nimproving performance.\n\n\nAndroid audio architecture defines how audio functionality is implemented and\npoints to the relevant source code involved in the implementation.\n\n\n**Figure 1.** Android audio architecture\n\n\nApplication framework\n:\n The application framework includes the app code, which uses the [android.media](http://developer.android.com/reference/android/media/package-summary.html) APIs to\n interact with audio hardware. Internally, this code calls corresponding JNI glue\n classes to access the native code that interacts with audio hardware.\n\n\nJNI\n:\n The JNI code associated with [android.media](http://developer.android.com/reference/android/media/package-summary.html) calls lower level native code to access audio\n hardware. JNI is located in `frameworks/base/core/jni/` and\n `frameworks/base/media/jni`.\n\n\nNative framework\n:\n The native framework provides a native equivalent to the [android.media](http://developer.android.com/reference/android/media/package-summary.html) package, calling\n Binder IPC proxies to access the audio-specific services of the media server.\n Native framework code is located in `frameworks/av/media/libmedia`.\n\n\nBinder IPC\n:\n Binder IPC proxies facilitate communication over process boundaries. Proxies are\n located in `frameworks/av/media/libmedia` and begin with the letter\n \"I\".\n\n\nMedia server\n:\n The media server contains audio services, which are the actual code that\n interacts with your HAL implementations. The media server is located in\n `frameworks/av/services/audioflinger`.\n\n\nHAL\n:\n The HAL defines the standard interface that audio services call into and that\n you must implement for your audio hardware to function correctly. For more details, refer to the [audio HAL\n interface](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/audio/) and comments in the `*.hal` files of the corresponding HAL version directory.\n\n\nKernel driver\n\n: The audio driver interacts with your hardware and HAL implementation. You can use Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), or a custom driver (HAL is driver-agnostic). **Note** : If you use ALSA, we recommend\n `external/tinyalsa` for the user portion of the driver because of its\n compatible licensing (the standard user-mode library is GPL-licensed).\n\n\nAndroid native audio based on Open SL ES *(not shown)*\n:\n This API is exposed as part of\n [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html)\n and is at the same architecture level as\n [android.media](http://developer.android.com/reference/android/media/package-summary.html)."]]