Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Audio-Aufwärmung
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die Audio-Aufwärmzeit ist die Zeit, die vergeht, bis die Audioverstärkerschaltung Ihres Geräts vollständig eingeschaltet ist und den normalen Betriebsstatus erreicht. Die Hauptfaktoren für die Aufwärmzeit von Audiogeräten sind die Energieverwaltung und die Logik zur Unterdrückung von Popp-Geräuschen, um die Schaltung zu stabilisieren.
In diesem Dokument wird beschrieben, wie Sie die Aufwärmzeit für Audio messen und wie Sie sie verkürzen können.
Ausgabevorwärmung messen
Der FastMixer-Thread von AudioFlinger misst automatisch die Ausgabeaufwärmung und gibt sie als Teil der Ausgabe des Befehls dumpsys media.audio_flinger
an.
Während der Aufwärmphase ruft FastMixer write()
wiederholt auf, bis die Zeit zwischen zwei write()
s der erwarteten entspricht.
FastMixer bestimmt das Audio-Warm-up, indem er ermittelt, wie lange es dauert, bis sich eine Hardware Abstraction Layer (HAL) write()
stabilisiert.
Führen Sie die folgenden Schritte für den integrierten Lautsprecher und kabelgebundene Kopfhörer aus, um die Audio-Aufwärmzeit zu messen. Wiederholen Sie die Schritte zu unterschiedlichen Zeiten nach dem Starten. Die Aufwärmzeiten sind in der Regel für jedes Ausgabegerät unterschiedlich und direkt nach dem Starten des Geräts:
- Prüfen Sie, ob FastMixer aktiviert ist.
- Sie können Touch-Töne aktivieren, indem Sie auf dem Gerät Einstellungen > Ton > Touch-Töne auswählen.
- Das Audio muss mindestens drei Sekunden lang stummgeschaltet gewesen sein. Fünf Sekunden oder mehr sind besser, da die Hardware selbst möglicherweise eine eigene Energieverwaltung hat, die über die drei Sekunden von AudioFlinger hinausgeht.
- Drücken Sie die Startbildschirmtaste. Sie sollten ein Klicken hören.
- Führen Sie den folgenden Befehl aus, um die gemessene Aufwärmzeit zu erhalten:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Die Ausgabe sollte in etwa so aussehen:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
Die measuredWarmup=X
ist die Anzahl der Millisekunden, die für die Ausführung der ersten HAL-write()
s benötigt wurden.
Die warmupCycles=X
gibt an, wie viele HAL-Schreibanfragen erforderlich waren, bis die Ausführungszeit von write()
der erwarteten entspricht.
-
Nehmen Sie fünf Messungen vor und notieren Sie sich alle Ergebnisse sowie den Mittelwert.
Wenn sie nicht ungefähr gleich sind, ist eine Messung wahrscheinlich falsch.
Wenn Sie beispielsweise nicht lange genug warten, nachdem der Ton ausgeschaltet wurde, wird eine kürzere Aufwärmzeit als der Mittelwert angezeigt.
Derzeit gibt es keine Tools zum Messen der Aufwärmzeit der Audioeingabe.
Die Aufwärmzeit der Eingabe kann jedoch anhand der Zeit geschätzt werden, die für die Rückgabe von startRecording() erforderlich ist.
Aufwärmzeit verkürzen
Die Aufwärmzeit lässt sich in der Regel durch eine Kombination aus folgenden Maßnahmen reduzieren:
- Gutes Schaltungsdesign
- Genaue Zeitverzögerungen im Kernel-Gerätetreiber
- Unabhängige Aufwärmvorgänge gleichzeitig statt nacheinander ausführen
- Schaltkreise eingeschaltet lassen oder Taktgeber nicht neu konfigurieren (erhöht den Stromverbrauch im Leerlauf)
- Berechnete Parameter im Cache speichern
Achten Sie jedoch darauf, dass Sie nicht zu sehr optimieren. Möglicherweise müssen Sie einen Kompromiss zwischen einer kurzen Aufwärmzeit und dem Fehlen von Knacken bei der Stromversorgung eingehen.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-03-26 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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."]]