2014-07-09 16 views

risposta

2
STREAM_ALARM  The audio stream for alarms 
STREAM_DTMF   The audio stream for DTMF Tones 
STREAM_MUSIC  The audio stream for music playback 
STREAM_NOTIFICATION The audio stream for notifications 
STREAM_RING   The audio stream for the phone ring 
STREAM_SYSTEM  The audio stream for system sounds 
STREAM_VOICE_CALL The audio stream for phone calls 

da http://developer.android.com/reference/android/media/AudioManager.html differenza

+2

È abbastanza chiaro quale scopo servono. La mia domanda riguarda il modo in cui differiscono a basso livello. Non può essere solo 10 flussi identici. –

+0

È chiaro che è possibile leggere il nome dell'identificatore ... Qual è il comportamento di ogni flusso? Quale è prioritario? Quale viene riprodotto in quale modalità audio? Quali anatre quando gioca il flusso? Quale è soggetto a qualche meccanismo di silenziamento? – Meymann

7

Uno più significativi è un controllo del volume.
Come dice document, possiamo impostare un livello di volume o regolare un volume per ciascun flusso rispettivamente.
E possiamo controllare "Audio Focus" che consente ad altre app di interrompere la riproduzione o abbassare i volumi in modo che possiamo riprodurre chiaramente un suono su un flusso specifico, o il suono non bloccherà l'altro suono con priorità alta come squillo del telefono, feedback vocale di navigazione o qualcosa del genere come quello.

Con più app potenzialmente in riproduzione audio è importante pensare a come dovrebbero interagire. Per evitare che tutte le app musicali vengano riprodotte contemporaneamente, Android utilizza la messa a fuoco audio per moderare le app di riproduzione audio solo se l'audio focus è attivo.

Altra cosa non menzionata è il dispositivo audio che produce un suono.
Utilizzando STREAM_MUSIC il suono verrà prodotto tramite un dispositivo audio (altoparlante del telefono, auricolare, altoparlante bluetooth o qualcos'altro) collegato al telefono.
Utilizzando STREAM_RING il suono verrà riprodotto attraverso tutti i dispositivi audio collegati al telefono. Questo comportamento potrebbe essere diverso per ogni dispositivo.

+0

Queste sono informazioni utili. Grazie! –

+0

@KeithYokoma. Esiste la possibilità di ridurre il volume del flusso da altri stream. Ho osservato che STREAM_VOICE_CALL sta riducendo il volume di STREAM_MUSIC? Qualche ipotesi su come sta succedendo? –

3

Come al solito, tutto ciò che Google non documento può (a volte) essere capito dal codice

https://android.googlesource.com/platform/frameworks/base/+/00ccd5d026fcd0e4b9d27dc5a9ffa13ca0408449/media/java/android/media/AudioService.java

Per quanto riguarda il blocco, non è in realtà che i flussi blocco l'un l'altro, è solo che i modi di blocco cose. MODE_IN_COMMUNICATION blocca la maggior parte dei flussi.

Ducking: Un comportamento comune e "educato" quando si riproduce un flusso prolungato (ad esempio MUSIC) è quello di ascoltare un richiamo di audio focus e abbassare manualmente il volume del flusso in seguito all'evento "can duck". Il volume dovrebbe tornare al livello precedente quando lo stato attivo torna al flusso.

+0

Pensa che una modalità errata nell'audio o nella traccia audio quando si utilizza l'audiorecord e l'inizializzazione della traccia audio o di un altro registratore audio disattivano o disattivano automaticamente il microfono? –

+1

Spiacente, non ho fatto abbastanza esperimenti con il percorso di registrazione audio. È probabile che sia lo stesso. Tuttavia, ci sono app che registrano le telefonate, ci sono app che mostrano il livello del suono in qualsiasi momento, quindi immagino sia più flessibile sul lato del microfono. Il microfono è in ingresso, quindi non c'è un vero conflitto, suppongo. Gli stessi campioni vanno solo nell'app A, B o C. Forse il volume e le cose, ma questo è un problema minore. – Meymann

+0

Ok! Capisco e ottengo la logica. Dare un'occhiata a un registratore di chiamata e indagare! Grazie per il tuo tempo :) –