Attributs audio

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