A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Abilitazione audio
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Il warm up audio è il tempo necessario per l'alimentazione completa del circuito dell'amplificatore audio del dispositivo e per il raggiungimento del normale stato di funzionamento. I fattori principali che influiscono sul tempo di riscaldamento dell'audio sono la gestione dell'alimentazione e qualsiasi logica di "de-pop" per stabilizzare il circuito.
Questo documento descrive come misurare il tempo di acclimatamento dell'audio e i possibili modi per ridurlo.
Misurare il riscaldamento dell'output
Il thread FastMixer di AudioFlinger misura automaticamente il riscaldamento dell'output
e lo segnala nell'output del comando dumpsys media.audio_flinger
.
Durante il riscaldamento, FastMixer chiama write()
ripetutamente fino a quando il tempo tra due write()
è pari all'importo previsto.
FastMixer determina il riscaldamento dell'audio osservando il tempo necessario per la stabilizzazione di un livello di astrazione hardware (HAL) write()
.
Per misurare il riscaldamento audio, segui questi passaggi per lo speaker integrato e le cuffie con cavo
e in momenti diversi dopo l'avvio. I tempi di riscaldamento sono in genere diversi per ogni dispositivo di output
e subito dopo l'avvio del dispositivo:
- Assicurati che FastMixer sia abilitato.
- Attiva i suoni tocco selezionando Impostazioni > Audio > Suoni tocco sul dispositivo.
- Assicurati che l'audio sia disattivato da almeno tre secondi. Cinque secondi o più sono meglio, perché
l'hardware stesso potrebbe avere una propria logica di alimentazione oltre i tre secondi di AudioFlinger.
- Premi Home e dovresti sentire un clic.
- Esegui il seguente comando per ricevere il riscaldamento misurato:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
Dovresti vedere un output simile al seguente:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
è il numero X di millisecondi necessari per il completamento del primo insieme di write()
HAL.
warmupCycles=X
indica il numero di richieste di scrittura HAL necessarie
fino a quando il tempo di esecuzione di write()
non corrisponde a quello previsto.
-
Effettua cinque misurazioni e registrale tutte, oltre alla media.
Se non sono tutti approssimativamente uguali,
è probabile che una misurazione non sia corretta.
Ad esempio, se non aspetti abbastanza tempo dopo la disattivazione dell'audio,
vedrai un tempo di riscaldamento inferiore al valore medio.
Al momento non sono disponibili strumenti per misurare il riscaldamento dell'input audio.
Tuttavia, il tempo di aggiornamento dell'input può essere stimato osservando il tempo necessario per il ritorno di startRecording().
Riduci il tempo di riscaldamento
In genere, il tempo di riscaldamento può essere ridotto mediante una combinazione di:
- Progettazione del circuito di buona qualità
- Ritardi temporali accurati nel driver del dispositivo del kernel
- Eseguire operazioni di riscaldamento indipendenti in modo simultaneo anziché sequenziale
- Lasciare i circuiti accesi o non ricollegare gli orologi (aumenta il consumo di energia inutilizzata)
- Memorizzazione nella cache dei parametri calcolati
Tuttavia, fai attenzione a non ottimizzare eccessivamente. Potresti dover scegliere tra un tempo di riscaldamento ridotto e la mancanza di scoppi alle transizioni di potenza.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-03-26 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]