از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
تأخیر صوتی برای توسعه دهندگان برنامه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای کمترین تأخیر صوتی ممکن، توصیه می کنیم از Oboe استفاده کنید.
ابوا
Oboe از صدای بومی استفاده می کند و بر روی AAudio برای Android 8.1 و بالاتر و OpenSL ES برای نسخه های قدیمی تر اندروید ساخته شده است. برای دستیابی به کمترین تاخیر ممکن برای یک دستگاه، setPerformanceMode(oboe::PerformanceMode::LowLatency)
و setSharingMode(oboe::SharingMode::Exclusive)
را تنظیم کنید. راهنمای شروع ، README.md
، و راهنمای کامل را برای اطلاعات بیشتر در مورد ابوا ببینید. برای دریافت نمونه برنامه با استفاده از Oboe به برنامه Soundboard مراجعه کنید.
توجه: اگر از AudioTrack برای ایجاد جریانهای صوتی خروجی در جاوا برای برنامههای حساس به تأخیر استفاده میکنید، از حالت PERFORMANCE_MODE_LOW_LATENCY
استفاده کنید.
چک لیست پیاده سازی
برای استفاده از صدای بومی اندروید:
- Android NDK را دانلود و نصب کنید.
- راهنمای شروع برای ابوا را دنبال کنید.
- در سازنده Oboe
setPerformanceMode(oboe::PerformanceMode::LowLatency)
و setSharingMode(oboe::SharingMode::Exclusive)
فراخوانی کنید. - از اندازه بافر و نرخ نمونه توصیه شده توصیه شده توسط android.media.AudioManager.getProperty(java.lang.String) استفاده کنید.
توجه: از همان اندازه بافر و نرخ نمونه نیز باید برای ورودی استفاده شود.
- کنترلکنندههای پاسخ به تماس خود را کوتاه نگه دارید، بدون استفاده زیاد از CPU یا مسدود کردن نامحدود. از وارونگی اولویت اجتناب کنید.
- استفاده از الگوریتمهای غیر مسدودکننده را برای برقراری ارتباط بین کنترلکنندههای برگشت تماس ورودی و خروجی، و بین کنترلکنندههای پاسخ به تماس و بقیه برنامههایتان در نظر بگیرید.
منابع دیگر
source.android.com
سایت source.android.com در درجه اول برای OEM هایی که دستگاه های Android را می سازند و فروشندگان SoC که اجزای این OEM ها را تامین می کنند طراحی شده است.
با این حال، اطلاعات مفید زیادی در مورد تاخیر در این سایت وجود دارد، بنابراین ممکن است بخواهید آن را مرور کنید. مقالات مربوط به تأخیر صوتی را ببینید.
android-ndk
اگر در مورد نحوه استفاده از صدای بومی اندروید سؤالی دارید، میتوانید در گروه بحث android-ndk بپرسید.
گزارش اشکالات در Oboe
اگر در استفاده از Oboe مشکل دارید، می توانید یک اشکال را ثبت کنید .
فیلم های
- شروع با ابوا
- صدای تاخیر کم - زیرا گوش شما ارزش آن را دارد
- Android Dev Summit 2018.
- برنده شدن در اندروید - چگونه یک برنامه صوتی اندروید را بهینه کنیم
- چالش توسعه دهندگان اندروید 2018.
- صدای با کارایی بالا در Android (Google I/O 2013)
- کل ویدیو در مورد تاخیر است.
- ایجاد تجربیات چند رسانه ای عالی در Android (Google I/O 2014)
- 14 دقیقه اول درباره صدا به طور کلی و تاخیر ورودی به طور خاص است.
- تأخیر صوتی: اندازههای بافر (100 روز Google Dev)
- رابطه بین تأخیر صوتی، اندازه بافر و زمانبندی کار را شرح میدهد.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-03-26 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-03-26 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Audio latency for app developers\n\nFor the lowest possible audio latency, we recommend you use [Oboe](https://developer.android.com/games/sdk/oboe).\n\nOboe\n----\n\n[Oboe](https://github.com/google/oboe) uses native audio and is built\non AAudio for Android 8.1+ and OpenSL ES for older versions of Android. To achieve the lowest\npossible latency for a device, set `setPerformanceMode(oboe::PerformanceMode::LowLatency)`\nand `setSharingMode(oboe::SharingMode::Exclusive)`.\nSee the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md),\n[`README.md`](https://github.com/google/oboe/blob/main/README.md),\nand [Full guide](https://github.com/google/oboe/blob/main/docs/FullGuide.md) for more\ninformation on Oboe. Refer to the [Soundboard app](https://github.com/google/oboe/tree/main/samples/SoundBoard)\nfor a sample app using Oboe.\n\n**Note:** If you use [AudioTrack](https://developer.android.com/reference/android/media/AudioTrack)\nfor creating output audio streams in Java for latency sensitive applications, use the [`PERFORMANCE_MODE_LOW_LATENCY`](https://developer.android.com/reference/android/media/AudioTrack#PERFORMANCE_MODE_LOW_LATENCY)\nmode.\n\n\u003cbr /\u003e\n\nImplementation checklist\n------------------------\n\nTo use Android native audio:\n\n1. Download and install the [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html).\n2. Follow the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md) for Oboe.\n3. Call `setPerformanceMode(oboe::PerformanceMode::LowLatency)` and `setSharingMode(oboe::SharingMode::Exclusive)` on the Oboe builder.\n4. Use the recommended native buffer size and sample rate returned by [android.media.AudioManager.getProperty(java.lang.String)](http://developer.android.com/reference/android/media/AudioManager.html#getProperty(java.lang.String)).\n\n **Note:** The same buffer size and sample rate should also be used for input.\n5. Keep your callback handlers short, without bursty CPU usage or unbounded blocking. Avoid [priority inversion.](/docs/core/audio/avoiding_pi)\n6. Consider using [non-blocking algorithms](/docs/core/audio/avoiding_pi#nonBlockingAlgorithms) to communicate between input and output callback handlers, and between the callback handlers and the rest of your application.\n\nOther resources\n---------------\n\n### source.android.com\n\n\nThe site [source.android.com](/)\nis primarily designed for OEMs building Android\ndevices, and the SoC vendors who supply components to these OEMs.\n\n\nHowever, there is a wealth of useful information about latency at this site, so\nyou may want to review it. See the articles at\n[Audio latency.](/docs/core/audio/latency/latency)\n\n### android-ndk\n\n\nIf you have questions about how to use Android native audio, you can ask at the discussion group\n[android-ndk](https://groups.google.com/forum/#!forum/android-ndk).\n\n### Report bugs on Oboe\n\n\nIf you have issues using Oboe, you can\n[file a bug](https://github.com/google/oboe/issues).\n\n### Videos\n\n[Getting started with Oboe](https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa)\n[Low Latency Audio - Because Your Ears Are Worth It](https://www.youtube.com/watch?v=8vOf_fDtur4)\n: Android Dev Summit 2018.\n\n[Winning on Android - How to optimize an Android audio app](https://www.youtube.com/watch?v=tWBojmBpS74)\n: Android Developer Challenge 2018.\n\n[High performance audio on Android](https://youtu.be/d3kfEeMZ65c)\n(Google I/O 2013)\n: The whole video is about latency.\n\n[Building great multi-media experiences on Android](https://youtu.be/92fgcUNCHic)\n(Google I/O 2014)\n: The first 14 minutes are about audio in general and input latency in particular.\n\n[Audio latency: buffer sizes](https://youtu.be/PnDK17zP9BI)\n(100 Days of Google Dev)\n: Describes the relationship between audio latency, buffer sizes, and task scheduling."]]