Attributi audio

I lettori audio supportano gli attributi che definiscono il modo in cui il sistema audio gestisce le decisioni relative a routing, volume e messa a fuoco per l'origine specificata. Le applicazioni possono associare attributi a una riproduzione audio (ad esempio la musica riprodotta da un servizio di streaming o una notifica per una nuova email) e poi passare gli attributi delle sorgenti audio al framework, dove il sistema audio li utilizza per prendere decisioni di missaggio e per notificare alle applicazioni lo stato del sistema.

In Android 4.4 e versioni precedenti, il framework prendeva decisioni di missaggio utilizzando solo il tipo di stream audio. Tuttavia, basare queste decisioni sul tipo di stream era troppo limitante per produrre output di qualità su più applicazioni e dispositivi. Ad esempio, su un dispositivo mobile, alcune applicazioni (ad es. Google Maps) riproducevano le indicazioni stradali sul tipo di stream STREAM_MUSIC. Tuttavia, sui dispositivi mobili in modalità di proiezione (ad es. Android Auto), le applicazioni non possono combinare le indicazioni stradali con altri stream multimediali.

Utilizzando l'API Audio Attribute, le applicazioni forniscono al sistema audio informazioni dettagliate su una sorgente audio specifica, tra cui l'utilizzo (perché la sorgente viene riprodotta), il tipo di contenuti (cosa viene riprodotto dalla sorgente), gli indicatori (come deve essere riprodotta la sorgente) 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 l'origine viene riprodotta e controlla le decisioni relative a routing, messa a fuoco e volume.
  • Tipo di contenuti. Specifica cosa sta riproducendo l'origine (musica, film, voce, sonificazione, sconosciuto).
  • Contesto. Valori di utilizzo astratti nell'HAL Audio.
  • Flag. Specifica in che modo deve essere riprodotta l'origine. Include il supporto dell'applicazione dell'udibilità (suoni dell'otturatore della fotocamera obbligatori in alcuni paesi) e della sincronizzazione audio/video hardware.

Per l'elaborazione dinamica, le applicazioni devono distinguere tra film, musica e contenuti vocali. Potrebbero essere importanti anche le informazioni sui dati stessi, come la dinamica e il valore del campione di picco.

Utilizzare gli attributi

L'utilizzo specifica il contesto in cui viene utilizzato lo stream, fornendo informazioni sul motivo per cui viene riprodotto e per cosa viene utilizzato. Le informazioni sull'utilizzo sono più espressive di un tipo di stream e consentono alle piattaforme o alle norme di routing di 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_DELAYED
  • USAGE_NOTIFICATION_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
  • USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • USAGE_ASSISTANT

I valori di utilizzo dell'attributo audio sono mutuamente esclusivi. Per esempi, consulta le definizioni di USAGE_MEDIA e USAGE_ALARM. Per le eccezioni, consulta la definizione di AudioAttributes.Builder.

Tipo di contenuti

Il tipo di contenuto definisce il suono ed esprime la categoria generale dei contenuti, ad esempio film, voce o beep/suoneria. Il framework audio utilizza le informazioni sul tipo di contenuti per configurare in modo selettivo i blocchi di post-elaborazione audio. Sebbene l'indicazione del tipo di contenuti sia facoltativa, devi includere informazioni sul tipo ogni volta che è noto, ad esempio utilizzando 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 contenuti 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 dell'attributo audio sono mutuamente esclusivi. Per informazioni dettagliate sui tipi di contenuti, consulta l'API Attribute Audio.

Contesti

Ogni suono in Android è identificato dall'applicazione responsabile e dal motivo per cui viene generato. Il dispositivo Android utilizza queste informazioni per determinare come presentare il suono. In Android 8.x e versioni precedenti, le applicazioni possono segnalare il motivo della generazione di suoni utilizzando i tipi di stream precedenti (ad es. AudioSystem.STREAM_MUSIC) o AudioAttributes. In Android 9, i valori AudioAttributes.usage vengono astratti a livello di HAL come contesti.

Contesti audio HAL Utilizzo di AudioAttributes
MUSICA CONTENUTI MULTIMEDIALI
VOICE_COMMAND USAGE_ASSISTANT
NAVIGAZIONE ASSISTANCE_NAVIGATION_GUIDANCE
CHIAMA VOICE_COMMUNICATION
RINGTONE NOTIFICATION_RINGTONE
NOTIFICA NOTIFICA
SVEGLIA SVEGLIA
SYSTEM_SOUND ASSISTANCE_SONIFICATION
SCONOSCIUTO SCONOSCIUTO

Per qualsiasi istanza, puoi fornire uno dei seguenti valori CONTEXT_NUMBER:

  • MUSIC_CONTEXT // Riproduzione di musica
  • NAVIGATION_CONTEXT // Indicazioni stradali di navigazione
  • VOICE_COMMAND_CONTEXT // Sessione di comando vocale
  • CALL_RING_CONTEXT // Suoneria della chiamata vocale
  • CALL_CONTEXT // Chiamata vocale
  • ALARM_CONTEXT // Suono sveglia da Android
  • NOTIFICATION_CONTEXT // Notifiche
  • SYSTEM_SOUND_CONTEXT // Suoni di interazione con l'utente (clic sui pulsanti e così via)

Bandiere

Gli indicatori 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. Chiede al sistema di garantire l'udibilità del suono. Da utilizzare per soddisfare le esigenze dei sistemi legacySTREAM_SYSTEM_ENFORCED (ad esempio l'attivazione forzata dell'audio dell'otturatore della fotocamera).
  • HW_AV_SYNC. Chiede al sistema di selezionare uno stream di output che supporti la sincronizzazione A/V hardware.

Gli indicatori degli attributi audio non sono esclusivi e possono essere combinati. Per informazioni dettagliate su questi flag, consulta l'API Attribute Audio.

Esempio

In questo esempio, AudioAttributes.Builder definisce il valore AudioAttributes da utilizzare da una nuova istanza AudioTrack:

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 devono utilizzare gli attributi audio durante la creazione o l'aggiornamento di applicazioni per Android 5.0 e versioni successive. Tuttavia, le applicazioni non sono obbligatoriamente tenute a sfruttare gli attributi; possono gestire solo i tipi di stream precedenti o non essere a conoscenza degli attributi (ad es. un media player generico che non sa nulla dei contenuti che sta riproducendo).

In questi casi, il framework mantiene la compatibilità con le versioni precedenti dei dispositivi e di Android traducendo automaticamente i tipi di stream audio legacy in attributi audio. Tuttavia, il framework non applica né garantisce questa mappatura su dispositivi, produttori o release di Android.

Mappature della 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 (@hide) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@hide) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@hide) STREAM_DTMF

Tipi di stream deprecati

Android 9 ritira i seguenti tipi di stream per uso auto e motori:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • STREAM_RING
  • STREAM_MUSIC
  • STREAM_ALARM
  • STREAM_NOTIFICATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_ACCESSIBILITY

Per maggiori dettagli, consulta Audio per auto e motori.