اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
وقت استجابة الصوت لمطوّري التطبيقات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
للحصول على أقل وقت استجابة ممكن للصوت، ننصحك باستخدام Oboe.
مزمار
يستخدم Oboe واجهة الصوت الأصلية ويتم إنشاؤه
استنادًا إلى AAudio لنظام التشغيل Android 8.1 والإصدارات الأحدث وOpenSL ES للإصدارات القديمة من Android. لتحقيق أدنى وقت ممكن
للاستجابة على الجهاز، اضبط setPerformanceMode(oboe::PerformanceMode::LowLatency)
وsetSharingMode(oboe::SharingMode::Exclusive)
.
اطّلِع على دليل البدء،
README.md
،
والدليل الكامل للحصول على المزيد من
المعلومات عن Oboe. يمكنك الرجوع إلى تطبيق Soundboard
للاطّلاع على نموذج تطبيق يستخدم Oboe.
ملاحظة: إذا كنت تستخدِم AudioTrack
لإنشاء مصادر بث صوتي في Java للتطبيقات الحسّاسة للوقت المستغرَق في المعالجة، استخدِم الوضع PERFORMANCE_MODE_LOW_LATENCY
.
قائمة التحقّق من التنفيذ
لاستخدام ميزة "الصوت الأصلي" في Android، اتّبِع الخطوات التالية:
-
نزِّل حزمة تطوير البرامج (NDK) لنظام التشغيل Android وثبِّتها.
-
اتّبِع دليل البدء
لتطبيق Oboe.
-
يُرجى الاتصال بالرقمين
setPerformanceMode(oboe::PerformanceMode::LowLatency)
وsetSharingMode(oboe::SharingMode::Exclusive)
على أداة إنشاء Oboe.
-
استخدِم حجم المخزن المؤقت الأصلي المقترَح ومعدّل أخذ العينات الذي يعرضه الإجراء
android.media.AudioManager.getProperty(java.lang.String).
ملاحظة: يجب أيضًا استخدام حجم المخزن المؤقت ومعدل أخذ العينات نفسهما للبيانات المُدخلة.
-
يجب أن تكون معالجات عمليات الاستدعاء قصيرة، بدون استخدام متقطّع لوحدة المعالجة المركزية أو حظر غير محدود. تجنَّب
عكس الأولوية.
-
ننصحك باستخدام
خوارزميات غير محظورة
للتواصل بين معالجات استدعاءات الإدخال والإخراج،
وبين معالجات استدعاءات الإدخال والإخراج وبقية أجزاء تطبيقك.
مراجع أخرى
source.android.com
تم تصميم الموقع الإلكتروني source.android.com
بشكل أساسي للمصنّعين الأصليين للأجهزة الذين ينشئون
أجهزة Android، ومورّدي المنظومة على الرقاقة الذين يوفّرون المكوّنات لهؤلاء المصنّعين الأصليين.
ومع ذلك، تتوفّر على هذا الموقع الإلكتروني مجموعة كبيرة من المعلومات المفيدة حول وقت الاستجابة، لذلك
ننصحك بمراجعته. اطّلِع على المقالات في وقت استجابة الصوت.
android-ndk
إذا كانت لديك أسئلة حول كيفية استخدام واجهة Android الصوتية الأصلية، يمكنك طرحها في مجموعة المناقشة
android-ndk.
الإبلاغ عن أخطاء في Oboe
إذا واجهت مشاكل في استخدام Oboe، يمكنك
إبلاغنا بأي أخطاء.
الفيديوهات
- بدء استخدام Oboe
- صوت بوقت استجابة منخفض: لأنّ أذنيك تستحق ذلك
- مؤتمر Android Dev Summit لعام 2018
- تحقيق النجاح على Android: كيفية تحسين تطبيق صوتي على Android
- تحدّي مطوّري تطبيقات Android لعام 2018
- صوت عالي الأداء على Android
(مؤتمر Google I/O لعام 2013)
- يتناول الفيديو بأكمله وقت الاستجابة.
- توفير تجارب رائعة للوسائط المتعددة على Android
(مؤتمر Google I/O لعام 2014)
- تتناول الدقائق الـ 14 الأولى الصوت بشكل عام ووقت استجابة الإدخال على وجه الخصوص.
- وقت استجابة الصوت: أحجام المخزن المؤقت
(100 يوم من تطوير Google)
- يوضّح هذا القسم العلاقة بين وقت استجابة الصوت وحجم المخزن المؤقت وجدولة المهام.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java و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."]]