Attributi audio

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 modelli STREAM_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.