Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Аудио разминка
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Прогрев звука — это время, необходимое для того, чтобы схема аудиоусилителя вашего устройства полностью включилась и достигла нормального рабочего состояния. Основными факторами, влияющими на время прогрева звука, являются управление питанием и любая логика «остановки» для стабилизации схемы.
В этом документе описывается, как измерить время прогрева звука и возможные способы его уменьшения.
Измерьте выходной прогрев
Поток FastMixer AudioFlinger автоматически измеряет разогрев вывода и сообщает об этом как часть вывода команды dumpsys media.audio_flinger
. При прогреве FastMixer вызывает write()
несколько раз, пока время между двумя write()
не станет ожидаемым. FastMixer определяет прогрев звука, наблюдая, сколько времени требуется методу write()
для стабилизации.
Чтобы измерить прогрев звука, выполните следующие действия для встроенного динамика и проводных наушников и в разное время после загрузки. Время прогрева обычно разное для каждого устройства вывода и сразу после загрузки устройства:
- Убедитесь, что FastMixer включен.
- Включите звуки касания, выбрав «Настройки» > «Звук» > «Звуки касания» на устройстве.
- Убедитесь, что звук отключен как минимум на три секунды. Лучше пять секунд или больше, потому что само оборудование может иметь собственную логику питания помимо трех секунд, которые есть у AudioFlinger.
- Нажмите «Домой», и вы должны услышать щелчок.
- Выполните следующую команду, чтобы получить измеренное значение прогрева:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Вы должны увидеть такой вывод:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
— это количество миллисекунд, которое потребовалось для завершения первого набора операций HAL write()
.
warmupCycles=X
— это количество запросов на запись HAL, которое потребовалось до тех пор, пока время выполнения write()
не соответствовало ожидаемому.
- Сделайте пять измерений и запишите их все, а также среднее значение. Если они не все примерно одинаковы, то, вероятно, измерение неверно. Например, если вы не подождите достаточно долго после выключения звука, вы увидите меньшее время прогрева, чем среднее значение.
В настоящее время не существует инструментов для измерения прогрева аудиовхода. Однако время прогрева ввода можно оценить, наблюдая за временем, необходимым для возврата startRecording() .
Уменьшите время прогрева
Время прогрева обычно можно сократить за счет комбинации:
- Хорошая схема
- Точные временные задержки в драйвере устройства ядра.
- Выполнение независимых операций прогрева одновременно, а не последовательно.
- Оставление цепей включенными или отсутствие перенастройки часов (увеличивает энергопотребление в режиме ожидания)
- Кэширование вычисляемых параметров
Однако остерегайтесь чрезмерной оптимизации. Вы можете обнаружить, что вам нужно найти компромисс между малым временем прогрева и отсутствием хлопков при переключении мощности.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-03-26 UTC.
[[["Прост для понимания","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 UTC."],[],[],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."]]