Les lecteurs audio sont compatibles avec les attributs qui définissent la manière dont le système audio gère de routage, de volume et de ciblage pour la source spécifiée. Applications vous pouvez associer des attributs à une lecture audio (comme la musique jouée par service de streaming ou une notification pour un nouvel e-mail), puis transmettre le son les attributs sources au framework, où le système audio utilise les attributs pour prendre des décisions de combinaison et pour informer les applications de l'état du du système d'exploitation.
Dans Android 4.4 et versions antérieures, le framework a pris des décisions de combinaison en n'utilisant le type de flux audio. Toutefois, baser ces décisions sur le type de flux était trop pour produire un résultat de qualité sur plusieurs applications et appareils. Par exemple, sur un appareil mobile, certaines applications (comme Google Maps) jouaient les itinéraires routiers sur le type de flux STREAM_MUSIC ; Toutefois, sur les appareils mobiles, en mode projection (Android Auto), les applications ne peuvent pas utiliser la même conduite des directions avec d'autres flux multimédias.
Avec les Audio Attribute d'une API, les applications fournissent au système audio des informations détaillées des informations sur une source audio spécifique, y compris son utilisation (pourquoi la source est de lecture), le type de contenu (ce que la source lit), les indicateurs (comment la source à lire) et les contextes (nouveauté d'Android 9). Syntaxe:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- Utilisation. Spécifie la raison pour laquelle la source est lue et les commandes en matière de routage, d'orientation et de volume.
- Type de contenu : Spécifie ce que la source lit (musique, film, voix, sonification, inconnue).
- Contexte. Valeurs d'utilisation extraites dans le HAL audio.
- Indicateurs : Spécifie la manière dont la source doit être lue. Compatible avec l'application de l'audibilité (son de l'obturateur de l'appareil photo est requis dans certains pays) et la synchronisation audio/vidéo matérielle.
Pour le traitement dynamique, les applications doivent faire la distinction entre les films, et contenus vocaux. Les informations sur les données elles-mêmes peuvent également avoir leur importance, par exemple : le volume sonore et la valeur maximale d'échantillon.
Utiliser des attributs
"Utilisation" spécifie le contexte dans lequel le flux est utilisé des informations sur les raisons pour lesquelles le son est diffusé et à quoi il sert. Les informations d'utilisation sont plus expressives qu'un type de flux et permettent aux plates-formes ou règles de routage pour affiner les décisions de volume ou de routage.
Indiquez l'une des valeurs d'utilisation suivantes pour n'importe quelle instance:
- UTILISATION_INCONNUE
- USAGE_MEDIA
- COMMUNICATION VOCALE D'UTILISATION
- SIGNALLING_VOICE_COMMUNICATION_USAGE
- ALARME_USAGE
- NOTIFICATION_D'UTILISATION
- TÉLÉPHONIE_DE_NOTIFICATION_D'UTILISATION
- DEMANDE_DE_COMMUNICATION_D'USAGE_NOTIFICATIONS
- USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_DELAYED
- USAGE_NOTIFICATION_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- USAGE_ASSISTANCE_NAVIGATION_guidelines
- SONIFICATION_ASSISTANCE_D'UTILISATION
- JEU_D'UTILISATION
- USAGE_VIRTUAL_SOURCE
- ASSISTANT_D'UTILISATION
Les valeurs d'utilisation de l'attribut audio s'excluent mutuellement. Pour obtenir des exemples, consultez
USAGE_MEDIA
et
USAGE_ALARM
définitions ; Pour connaître les exceptions, consultez la
AudioAttributes.Builder
définition.
Type de contenu
Le type de contenu définit le son et exprime la catégorie générale
le contenu (film, discours ou sonnerie/sonnerie, par exemple). Le framework audio utilise
des informations sur le type de contenu pour configurer de manière sélective le post-traitement de l'audio
blocs. Bien que la spécification du type de contenu soit facultative, vous devez inclure le type
des informations chaque fois que le type de contenu est connu, par exemple en utilisant
CONTENT_TYPE_MOVIE
pour un service de streaming de films ou
CONTENT_TYPE_MUSIC
pour une application de lecture de musique
Fournissez l'une des valeurs de type de contenu suivantes pour n'importe quelle instance:
CONTENT_TYPE_UNKNOWN
(par défaut)CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
Les valeurs du type de contenu des attributs audio s'excluent mutuellement. Pour en savoir plus sur les types de contenus, reportez-vous au audio d'attribut.
Contexts (Contextes)
Chaque son dans Android est identifié par l'application responsable et le motif
pour générer le son, et l'appareil Android utilise ces informations pour
déterminer comment présenter le son. Dans Android 8.x et versions antérieures, les applications peuvent
signaler le motif de génération du son en utilisant d'anciens types de flux (par exemple,
AudioSystem.STREAM_MUSIC
) ou AudioAttributes
. Dans
Android 9, valeurs AudioAttributes.usage
sont extraites au niveau du HAL en tant que contextes.
Contextes audio HAL | Utilisation d'AudioAttributes |
---|---|
MUSIQUE | CONTENU MULTIMÉDIA |
COMMANDE_VOCALE | ASSISTANT_D'UTILISATION |
NAVIGATION | CONSEILS_NAVIGATION_ASSISTANCE |
APPELER | COMMUNICATION VOCALE |
SONNER | NOTIFICATION_SONNERIE |
NOTIFICATION | NOTIFICATION |
ALARME | ALARME |
SON SYSTÈME | SONIFICATION_ASSISTANCE |
INCONNUE | INCONNUE |
Vous pouvez indiquer l'une des valeurs CONTEXT_NUMBER
suivantes pour les
Instance:
- MUSIC_CONTEXT // Lecture de la musique
- NAVIGATION_CONTEXT // Itinéraires de navigation
- VOICE_COMMAND_CONTEXT // Session de commande vocale
- CALL_RING_CONTEXT // Sonnerie des appels vocaux
- CALL_CONTEXT // Appel vocal
- ALARM_CONTEXT // Son de l'alarme Android
- NOTIFICATION_CONTEXT // Notifications
- SYSTEM_Sound_CONTEXT // Sons d'interaction de l'utilisateur (clics sur un bouton, etc.)
Drapeaux
Les options spécifient la manière dont le framework audio applique des effets à la lecture audio. Fournissez une ou plusieurs des options suivantes pour une instance:
FLAG_AUDIBILITY_ENFORCED
Demande au système de s'assurer que l'audibilité du son. Pour répondre aux besoins des clients existantsSTREAM_SYSTEM_ENFORCED
(par exemple, en forçant le son de l'obturateur de l'appareil photo).HW_AV_SYNC
Demande au système de sélectionner un flux de sortie qui prend en charge la synchronisation A/V du matériel.
Les indicateurs d'attributs audio ne sont pas exclusifs et peuvent être combinés. Pour en savoir plus sur ces options, reportez-vous à la audio d'attribut.
Exemple
Dans cet exemple, AudioAttributes.Builder
définit
AudioAttributes
à utiliser par un nouveau AudioTrack
Instance:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
Compatibilité
Les développeurs d'applications doivent utiliser des attributs audio lors de la création ou de la mise à jour pour Android 5.0 et versions ultérieures. Cependant, les applications ne sont pas pour tirer parti des attributs ; ils peuvent gérer d'anciens types de flux ou ignorer certains attributs (c'est-à-dire un lecteur multimédia générique vous n'en savez rien sur le contenu diffusé).
Dans de tels cas, le framework conserve la rétrocompatibilité appareils et versions Android en traduisant automatiquement les anciens flux audio aux attributs audio. Cependant, le framework n'applique pas ce mappage entre les appareils, les fabricants et les versions d'Android.
Mappages de compatibilité:
Android 5.0 ou version ultérieure | Android 4.4 et versions antérieures |
---|---|
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
|
(@masquer) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@masquer) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@masquer) STREAM_DTMF
|
Types de flux obsolètes
Android 9 abandonne les types de flux suivants pour utilisation automobile:
- STREAM_DEFAULT
- APPEL_VOIX_DIFFUSION
- SYSTÈME DE DIFFUSION
- ANNEAU_DIFFUSION
- MUSIQUE_STREAMING
- ALARME_FLUX
- NOTIFICATION_STREAM
- FLUX_BLUETOOTH_SCO
- FLUX_SYSTEM_ENFORCÉ
- STREAM_DTMF
- FLUX_TTS
- ACCESSIBILITÉ_DIFFUSION
Pour en savoir plus, consultez Audio pour voitures.