I lettori audio supportano attributi che definiscono il modo in cui il sistema audio gestisce le decisioni relative a routing, volume ed impostazione dello stato attivo per l'origine specificata. Applicazioni può collegare attributi a una riproduzione audio (come la musica riprodotta da un servizio di streaming o una notifica quando arriva una nuova email), quindi gli attributi di origine al framework, dove il sistema audio utilizza gli attributi di prendere decisioni in materia di mix e di notificare alle applicazioni lo stato del di un sistema operativo completo.
In Android 4.4 e versioni precedenti, il framework prendeva decisioni di mixaggio usando solo il tipo di stream audio. Tuttavia, basare queste decisioni sul tipo di stream era troppo limitare per produrre output di qualità su più applicazioni e dispositivi. Ad esempio, su un dispositivo mobile alcune applicazioni (come Google Maps) venivano riprodotte le indicazioni stradali per il tipo di stream STREAM_MUSIC. sui dispositivi mobili, invece, in modalità di proiezione (ad es. Android Auto), le app non possono combinare la guida con altri stream multimediali.
L'utilizzo del Audio API Attribute, le applicazioni forniscono al sistema audio informazioni informazioni su una sorgente audio specifica, incluso l'utilizzo (perché la fonte la riproduzione), il tipo di contenuto (il contenuto della fonte), le segnalazioni (la modalità di riproduzione devono essere riprodotti) e i contesti (novità di Android 9). Sintassi:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- Utilizzo. Specifica il motivo per cui la fonte viene riprodotta e i controlli decisioni su routing, focus e volume.
- Tipo di contenuti. Specifica il contenuto della fonte in riproduzione (musica, film, voce, sonificazione, sconosciuto).
- Contesto. Valori di utilizzo astratti verso l'HAL audio.
- Flag. Specifica la modalità di riproduzione della fonte. Include il supporto per l'applicazione forzata dell'udibilità (sono necessari i suoni dell'otturatore della fotocamera nelle alcuni paesi) e la sincronizzazione audio/video hardware.
Per l'elaborazione dinamica, le applicazioni devono distinguere tra filmati, musica e contenuti vocali. Possono essere importanti anche informazioni sui dati stessi, ad esempio il volume e il valore di picco del campione.
Utilizzare gli attributi
L'utilizzo specifica il contesto in cui viene utilizzato il flusso, fornendo informazioni sul motivo per cui il suono viene riprodotto e sull'utilizzo che viene fatto. Le informazioni sull'utilizzo sono più espressive di un tipo di stream e consentono alle piattaforme o criteri di routing per perfezionare le decisioni relative al volume o al routing.
Fornisci uno dei seguenti valori di utilizzo per qualsiasi istanza:
- USAGE_UNKNOWN
- USAGE_MEDIA
- USAGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- USAGE_ALARM
- USAGE_NOTIFICATION
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_SHORTED
- USAGE_NOTIFICATION_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- GUIDA_DI_USAGE_ASSISTANCE_NAVIGATION
- USAGE_ASSISTANCE_SONIFICATION
- USAGE_GAME
- USAGE_VIRTUAL_SOURCE
- USAGE_ASSISTANT
I valori di utilizzo degli attributi audio si escludono a vicenda. Per esempi, consulta
USAGE_MEDIA
e
USAGE_ALARM
definizioni; Per le eccezioni, consulta
AudioAttributes.Builder
definizione di Kubernetes.
Tipo di contenuti
Il tipo di contenuti definisce cos'è l'audio ed esprime la categoria generale
i contenuti, come film, voce o segnale acustico/suoneria. Il framework audio utilizza
informazioni sul tipo di contenuto per configurare selettivamente la post-elaborazione audio
isolati. Sebbene fornire il tipo di contenuti sia facoltativo, devi includere type
informazioni ogni volta che si conosce il tipo di contenuto, come l'utilizzo
CONTENT_TYPE_MOVIE
per un servizio di streaming di film o
CONTENT_TYPE_MUSIC
per un'applicazione di riproduzione di musica.
Fornisci uno dei seguenti valori per il tipo di contenuto per qualsiasi istanza:
CONTENT_TYPE_UNKNOWN
(valore predefinito)CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
I valori del tipo di contenuto degli attributi audio si escludono a vicenda. Per maggiori dettagli sui tipi di contenuti, consulta le audio dell'attributo.
Contesti
Ogni suono in Android viene identificato dall'applicazione responsabile e dal motivo
per generare il suono; e Android utilizza queste informazioni per
determinare come presentare il suono. In Android 8.x e versioni precedenti, le applicazioni possono
Segnala il motivo della generazione del suono utilizzando tipi di stream precedenti (ad es.
AudioSystem.STREAM_MUSIC
) o AudioAttributes
. Nella
Android 9, valori AudioAttributes.usage
sono astratti a livello di HAL come Contesti.
Contesto audio HAL | Utilizzo di AudioAttributes |
---|---|
MUSICA | CONTENUTI MULTIMEDIALI |
COMANDO_VOCE | USAGE_ASSISTANT |
NAVIGAZIONE | GUIDA_ASSISTENZA_NAVIGAZIONE |
CHIAMA | COMUNICAZIONE_VOCE |
SUONERIA | NOTIFICATION_RINGTONE |
NOTIFICA | NOTIFICA |
SVEGLIA | SVEGLIA |
SYSTEM_AUDIO | ASSISTENZA_SONIFICAZIONE |
SCONOSCIUTA | SCONOSCIUTA |
Puoi fornire uno dei seguenti valori CONTEXT_NUMBER
per qualsiasi
istanza:
- MUSIC_CONTEXT // Riproduzione di musica
- NAVIGATION_CONTEXT // Indicazioni stradali di navigazione
- VOICE_command_CONTEXT // Sessione di comando vocale
- CALL_RING_CONTEXT // Squillo chiamata vocale
- CALL_CONTEXT // Chiamata vocale
- ALARM_CONTEXT // Suono sveglia da Android
- NOTIFICATION_CONTEXT // Notifiche
- SYSTEM_AUD_CONTEXT // Suoni di interazione dell'utente (clic sui pulsanti e così via)
Bandiere
I flag specificano in che modo il framework audio applica gli effetti alla riproduzione audio. Fornisci uno o più dei seguenti flag per un'istanza:
FLAG_AUDIBILITY_ENFORCED
. Richiede al sistema di garantire che l'udibilità del suono. Da utilizzare per soddisfare le esigenze dei modelliSTREAM_SYSTEM_ENFORCED
(ad esempio forzare i suoni dell'otturatore della fotocamera).HW_AV_SYNC
. Chiede al sistema di selezionare un flusso di output che supporta la sincronizzazione hardware A/V.
I flag degli attributi audio non sono esclusivi e possono essere combinati. Per maggiori dettagli su di questi flag, fai riferimento audio dell'attributo.
Esempio
In questo esempio, AudioAttributes.Builder
definisce
AudioAttributes
da utilizzare da un nuovo AudioTrack
istanza:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
Compatibilità
Gli sviluppatori di applicazioni dovrebbero utilizzare attributi audio durante la creazione o l'aggiornamento applicazioni per Android 5.0 e successivi. Tuttavia, le applicazioni obbligatoria per sfruttare gli attributi; possono gestire tipi di stream precedenti o non essere a conoscenza degli attributi (ad esempio, un media player generico che non non ha più informazioni sui contenuti in riproduzione).
In questi casi, il framework mantiene la compatibilità con le versioni precedenti dei dispositivi e delle release di Android traducendo automaticamente lo stream audio precedente. tipi agli attributi audio. Tuttavia, il framework non applica o garantire questa mappatura tra dispositivi, produttori o release di Android.
Mappature di compatibilità:
Android 5.0 e versioni successive | Android 4.4 e versioni precedenti |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION
|
STREAM_VOICE_CALL
|
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION
|
STREAM_SYSTEM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE
|
STREAM_RING
|
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
|
STREAM_MUSIC
|
CONTENT_TYPE_SONIFICATION USAGE_ALARM
|
STREAM_ALARM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT
|
STREAM_NOTIFICATION
|
CONTENT_TYPE_SPEECH
|
(@nascondi) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@nascondi) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@nascondi) STREAM_DTMF
|
Tipi di stream deprecati
Android 9 ritira i seguenti tipi di stream per uso automobilistico:
- LIVE_STREAM_DEFAULT
- STREAM_VOICE_CALL
- SISTEMA_STREAM
- ANELLO_STREAM
- MUSICA_STREAM
- ALARM_STREAM
- NOTIFICA_STREAM
- STREAM_BLUETOOTH_SCO
- Sistema_STREAM_ENFORCED
- STREAM_DTMF
- STREAM_TTS
- ACCESSIBILITÀ ALLO STREAM
Per ulteriori dettagli, vedi Audio automobilistico.