اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
اختبار الصوت
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
"مدة التحضير للصوت" هي الوقت الذي يستغرقه مسار تضخيم الصوت في جهازك ليعمل بكامل طاقته ويصل إلى حالة التشغيل العادية. إنّ العوامل الرئيسية التي تساهم في مدّة التحضير للصوت هي إدارة الطاقة وأي منطق "لإزالة الأصوات الخاطئة" بهدف تثبيت الدائرة.
يوضّح هذا المستند كيفية قياس وقت الإعداد الصوتي والطُرق المحتمَلة لتقليل وقت الإعداد.
قياس فترة التحضير للإخراج
يقيس خيط FastMixer في AudioFlinger تلقائيًا فترة التحضير للإخراج
ويُبلغ عنها كجزء من إخراج الأمر dumpsys media.audio_flinger
.
في مرحلة الإعداد، يستدعي FastMixer write()
بشكل متكرّر إلى أن يصبح الوقت بين كل write()
هو المبلغ المتوقّع.
يحدِّد FastMixer فترة التحضير للصوت من خلال معرفة المدة التي يستغرقها write()
لاستقرار طبقة HAL.
لقياس وقت التحضير للصوت، اتّبِع الخطوات التالية للمكبّر المدمج وسماعات الرأس السلكية
وفي أوقات مختلفة بعد التشغيل. تختلف أوقات التحضير عادةً لكل جهاز إخراج
وبعد تشغيل الجهاز مباشرةً:
- تأكَّد من تفعيل FastMixer.
- يمكنك تفعيل أصوات اللمس من خلال اختيار الإعدادات > الصوت > أصوات اللمس على الجهاز.
- تأكَّد من أنّه تم إيقاف الصوت لمدة ثلاث ثوانٍ على الأقل. من الأفضل استخدام خمس ثوانٍ أو أكثر، لأنّه
قد يكون للجهاز نفسه منطق الطاقة الخاص به الذي يتجاوز الثلاث ثوانٍ التي يستخدمها AudioFlinger.
- اضغط على زر الشاشة الرئيسية، ومن المفترض أن تسمع صوت نقرة.
- شغِّل الأمر التالي لتلقّي فترة التحضير المقاسة:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
من المفترض أن يظهر لك ناتج على النحو التالي:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
هو عدد X من المللي ثانية
التي استغرقتها المجموعة الأولى من عمليات HAL write()
لإكمالها.
يشير warmupCycles=X
إلى عدد طلبات الكتابة في HAL التي تم إجراؤها
إلى أن يتطابق وقت تنفيذ write()
مع الوقت المتوقّع.
-
يمكنك إجراء خمسة قياسات وتسجيلها جميعًا، بالإضافة إلى المتوسط.
إذا لم تكن جميعها متماثلة تقريبًا،
من المحتمل أن يكون أحد القياسات غير صحيح.
على سبيل المثال، إذا لم تنتظر وقتًا كافيًا بعد إيقاف الصوت،
ستلاحظ وقتًا أقصر للتأهّل مقارنةً بالقيمة المتوسطة.
لا تتوفّر حاليًا أي أدوات لقياس فترة الاستعداد للإدخال الصوتي.
ومع ذلك، يمكن تقدير وقت إعداد الإدخال من خلال مراقبة
الوقت اللازم لظهور startRecording().
تقليل وقت الإعداد
يمكن عادةً تقليل وقت الإعداد من خلال مجموعة من الإجراءات التالية:
- تصميم الدائرة الكهربائية الجيد
- تأخيرات زمنية دقيقة في برنامج تشغيل جهاز kernel
- تنفيذ عمليات إعداد مستقلة بشكل متزامن بدلاً من تسلسلي
- ترك الدوائر الكهربائية مفعّلة أو عدم إعادة ضبط الساعات (يزيد من استهلاك الطاقة في وضع السكون)
- تخزين المَعلمات المحسوبة مؤقتًا
ومع ذلك، احرِص على عدم إجراء عمليات تحسين مفرطة. قد تحتاج إلى التوازن بين
وقت الإعداد المنخفض مقابل
عدم ظهور صوت فرقعة عند تغييرات الطاقة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ 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 warmup is the time it takes for the audio amplifier circuit in your device to\nbe fully powered and reach its normal operation state. The major contributors\nto audio warmup time are power management and any \"de-pop\" logic to stabilize\nthe circuit.\n\nThis document describes how to measure audio warmup time and possible ways to decrease\nwarmup time.\n\nMeasure output warmup\n---------------------\n\n\nAudioFlinger's FastMixer thread automatically measures output warmup\nand reports it as part of the output of the `dumpsys media.audio_flinger` command.\nAt warmup, FastMixer calls `write()`\nrepeatedly until the time between two `write()`s is the amount expected.\nFastMixer determines audio warmup by seeing how long a Hardware Abstraction\nLayer (HAL) `write()` takes to stabilize.\n\nTo measure audio warmup, follow these steps for the built-in speaker and wired headphones\nand at different times after booting. Warmup times are usually different for each output device\nand right after booting the device:\n\n1. Ensure that FastMixer is enabled.\n2. Enable touch sounds by selecting **Settings \\\u003e Sound \\\u003e Touch sounds** on the device.\n3. Ensure that audio has been off for at least three seconds. Five seconds or more is better, because the hardware itself might have its own power logic beyond the three seconds that AudioFlinger has.\n4. Press Home, and you should hear a click sound.\n5. Run the following command to receive the measured warmup: \n\n ```\n adb shell dumpsys media.audio_flinger | grep measuredWarmup\n ```\n\n\n You should see output like this: \n\n ```\n sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X\n ```\n\n\n The `measuredWarmup=X` is X number of milliseconds\n it took for the first set of HAL `write()`s to complete.\n\n\n The `warmupCycles=X` is how many HAL write requests it took\n until the execution time of `write()` matches what is expected.\n6. Take five measurements and record them all, as well as the mean. If they are not all approximately the same, then it's likely that a measurement is incorrect. For example, if you don't wait long enough after the audio has been off, you will see a lower warmup time than the mean value.\n\nMeasure input warmup\n--------------------\n\n\nThere are currently no tools provided for measuring audio input warmup.\nHowever, input warmup time can be estimated by observing\nthe time required for [startRecording()](http://developer.android.com/reference/android/media/AudioRecord.html#startRecording())\nto return.\n\nReduce warmup time\n------------------\n\n\nWarmup time can usually be reduced by a combination of:\n\n- Good circuit design\n- Accurate time delays in kernel device driver\n- Performing independent warmup operations concurrently rather than sequentially\n- Leaving circuits powered on or not reconfiguring clocks (increases idle power consumption)\n- Caching computed parameters\n\n\nHowever, beware of excessive optimization. You may find that you\nneed to tradeoff between low warmup time versus\nlack of popping at power transitions."]]