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 deSTREAM_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.