Atributos de áudio

Os players de áudio são compatíveis com atributos que definem como o sistema de áudio de roteamento, volume e foco da origem especificada. Aplicativos é possível acrescentar atributos a uma reprodução de áudio (como música tocada por um um serviço de streaming ou uma notificação sobre um novo e-mail) e, em seguida, transmita o áudio atributos de origem para o framework, em que o sistema de áudio usa os atributos para tomar decisões mistas e notificar os aplicativos sobre o estado da sistema.

No Android 4.4 e versões anteriores, o framework tomava decisões combinadas usando apenas o tipo de stream de áudio. No entanto, basear essas decisões no tipo de fluxo era muito com limitações para produzir resultados de qualidade em vários aplicativos e dispositivos. Por exemplo, em um dispositivo móvel, alguns aplicativos (como o Google Maps) abriram rotas de carro no tipo de fluxo STREAM_MUSIC; No entanto, em dispositivos móveis, no modo de projeção (ou seja, Android Auto), os aplicativos não podem misturar condutores direções por outros streams de mídia.

Usar o Áudio Attribute API, os aplicativos fornecem ao sistema de áudio informações sobre uma fonte de áudio específica, incluindo o uso (por que a fonte é reproduzindo), tipo de conteúdo (o que a fonte está reproduzindo), sinalizações (como a fonte está tocando) deve ser reproduzido) e contextos (novidade no Android 9). Sintaxe:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Uso. Especifica por que a fonte está tocando e controla de roteamento, foco e volume.
  • Tipo de conteúdo: Especifica o que a fonte está tocando (música, filme, fala, sonificação, desconhecido).
  • Context. Valores de uso abstraídos para a HAL de áudio.
  • Sinalizações. Especifica como a fonte deve ser reproduzida. Inclui suporte para aplicação de audibilidade (som do obturador da câmera necessários em alguns países) e a sincronização de áudio/vídeo de hardware.

Para processamento dinâmico, os aplicativos devem distinguir entre filmes, músicas, e fala. As informações sobre os dados em si também podem ser importantes, como volume e valor da amostra de pico.

Usar atributos

Uso especifica o contexto em que o stream é usado, fornecendo informações sobre por que o som está tocando e para que ele é usado. As informações de uso são mais expressivas do que um tipo de stream e permitem que as plataformas políticas de roteamento ou de roteamento para refinar decisões de volume ou roteamento.

Forneça um dos seguintes valores de uso para qualquer instância:

  • USAGE_UNKNOWN
  • USAGE_MEDIA
  • USAGE_VOICE_COMMUNICATION
  • USAGE_VOICE_COMMUNICATION_SIGNALLING
  • USAGE_ALARM
  • USAGE_NOTIFICAÇÃO
  • USAGE_notification_TELEPHONY_RINGTONE
  • USAGE_notification_COMMUNICATION_REQUEST
  • USAGE_NOTIFICAÇÃO_COMMUNICATION_INSTANT
  • USAGE_notification_COMMUNICATION_DELAYED
  • USAGE_notification_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_guidelines
  • USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • USAGE_ASSISTANT

Os valores de uso do atributo de áudio são mutuamente exclusivos. Para exemplos, consulte USAGE_MEDIA e USAGE_ALARM definições para exceções, consulte a AudioAttributes.Builder definição.

Tipo de conteúdo

O tipo de conteúdo define o som e expressa a categoria geral do o conteúdo como filme, fala ou bipe/toque. O framework de áudio usa informações de tipo de conteúdo para configurar seletivamente o pós-processamento de áudio blocos. Embora o fornecimento do tipo de conteúdo seja opcional, você deve incluir o tipo informações sempre que o tipo de conteúdo for conhecido, como usar CONTENT_TYPE_MOVIE para um serviço de streaming de filmes ou CONTENT_TYPE_MUSIC para um app de reprodução de música.

Forneça um dos seguintes valores de tipo de conteúdo para qualquer instância:

  • CONTENT_TYPE_UNKNOWN (padrão)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Os valores do tipo de conteúdo do atributo de áudio são mutuamente exclusivos. Para detalhes sobre tipos de conteúdo, consulte o áudio API de atributos.

Contextos

Cada som no Android é identificado pelo aplicativo responsável e pelo motivo para gerar o som. e dispositivo Android usa essas informações para determinar como apresentar o som. No Android 8.x e versões anteriores, os aplicativos podem informar o motivo da geração do som usando tipos de transmissão legados (por exemplo, AudioSystem.STREAM_MUSIC) ou AudioAttributes. Em Android 9, valores AudioAttributes.usage são abstraídos no nível da HAL como contextos.

Contextos de áudio HAL Uso de AudioAttributes
MÚSICA MÍDIA
COMANDO_DE_VOZ USAGE_ASSISTANT
NAVIGATION ASSISTANCE_NAVEGAÇÃO_ORIENTAÇÃO
CALL COMUNICAÇÃO POR VOZ
TOM TOQUE_DE_NOTIFICAÇÃO
NOTIFICAÇÃO NOTIFICAÇÃO
ALARME ALARME
SOM DO SISTEMA ASSISTÊNCIA_SONIFICAÇÃO
DESCONHECIDO DESCONHECIDO

É possível fornecer um dos seguintes valores CONTEXT_NUMBER para qualquer instância:

  • MUSIC_CONTEXT // Reprodução de música
  • NAVIGATION_CONTEXT // Direções de navegação
  • VOICE_COMMAND_CONTEXT // Sessão de comando de voz
  • CALL_RING_CONTEXT // Chamada de voz tocando
  • CALL_CONTEXT // Chamada de voz
  • ALARM_CONTEXT // Som de alarme do Android
  • NOTE_CONTEXT // Notificações
  • SYSTEM_INPUT_CONTEXT // Sons de interação do usuário (cliques em botões etc.)

Flags

As flags especificam como o framework aplica efeitos à reprodução do áudio. Forneça uma ou mais das seguintes sinalizações para uma instância:

  • FLAG_AUDIBILITY_ENFORCED: Solicita ao sistema para garantir que audibilidade do som. Use para atender às necessidades de STREAM_SYSTEM_ENFORCED (como forçar sons do obturador da câmera).
  • HW_AV_SYNC: Solicita que o sistema selecione um stream de saída com suporte à sincronização A/V de hardware.

As flags de atributos de áudio não são exclusivas e podem ser combinadas. Para detalhes sobre essas sinalizações, consulte a áudio API de atributos.

Exemplo

Neste exemplo, AudioAttributes.Builder define AudioAttributes para ser usado por um novo AudioTrack instância:

AudioTrack myTrack = new AudioTrack(
  new AudioAttributes.Builder()
 .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build(),
  myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);

Compatibilidade

Os desenvolvedores de aplicativos devem usar atributos de áudio ao criar ou atualizar aplicativos para o Android 5.0 e superior. No entanto, os aplicativos não são necessárias para aproveitar os atributos. eles podem lidar com tipos de streams legados ou não conhece os atributos (ou seja, um player de mídia genérico que não saber nada sobre o conteúdo que está tocando).

Nesses casos, o framework mantém a compatibilidade com versões anteriores e versões do Android traduzindo automaticamente o stream de áudio legado de tipos a atributos de áudio. No entanto, o framework não impõe nem garantem esse mapeamento entre dispositivos, fabricantes ou versões do Android.

Mapeamentos de compatibilidade:

Android 5.0 e superior Android 4.4 e anterior
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 (@ocultar) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@ocultar) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@ocultar) STREAM_DTMF

Tipos de stream descontinuados

O Android 9 descontinua os tipos de stream abaixo para uso automotivo:

  • PADRÃO_DA_STREAM
  • STREAM_VOICE_CALL
  • SISTEMA DE TRANSMISSÕES
  • TRANSMISSÕES AO VIVO
  • MÚSICA_STREAM
  • ALARM_STREAM
  • NOTIFICAÇÃO DE TRANSMISSÕES
  • STREAM_BLUETOOTH_SCO
  • SISTEMA DE TRANSMISSÕES
  • STREAM_DTMF
  • TTS_STREAM
  • ACESSIBILIDADE DAS TRANSMISSÕES

Para mais detalhes, consulte Áudio automotivo.