O Android 13 oferece suporte a áudio espacial, fornecendo APIs que permitem que os desenvolvedores de apps descubram se a combinação atual de implementação do smartphone, fone de ouvido conectado e configurações do usuário permite a reprodução de conteúdo de áudio multicanal de maneira imersiva.
Os OEMs podem oferecer um efeito de espacialização de áudio com suporte para rastreamento de movimentos da cabeça com o nível de desempenho e latência necessários, usando a nova arquitetura de pipeline de áudio e a integração de framework de sensor. O protocolo HID especifica como anexar um dispositivo de rastreamento da posição da cabeça por Bluetooth e disponibilizá-lo como um dispositivo HID pelo framework de sensores do Android. Consulte Áudio espacial e rastreamento da cabeça para conferir mais requisitos e validação.
As diretrizes desta página se aplicam a uma solução de áudio espacial que adota as novas APIs e arquiteturas de áudio espacial com um smartphone Android com o Android 13 ou versões mais recentes e fones de ouvido compatíveis com o sensor de rastreamento de cabeça.
Diretrizes para a implementação de modos de áudio espacial dinâmico e estático
O áudio espacial estático não requer rastreamento da cabeça, então não é necessário um recurso específico no fone de ouvido. Todos os fones de ouvido com e sem fio podem oferecer suporte a áudio espacial estático.
Implementação da API
Os OEMs precisam implementar a classe Spatializer
introduzida no Android 12. A implementação precisa passar nos testes CTS
introduzidos para a classe
Spatializer
.
Uma implementação de API robusta garante que os desenvolvedores de apps, em particular os serviços de streaming de mídia, possam contar com um comportamento consistente em todo o ecossistema e escolher o melhor conteúdo de acordo com os recursos do dispositivo, o contexto de renderização atual e as escolhas do usuário.
Interface do usuário
Depois de implementar a classe Spatializer
, valide se a interface tem o seguinte comportamento:
Quando o fone de ouvido compatível com áudio espacial estiver pareado, as configurações do dispositivo Bluetooth desse fone de ouvido vão exibir um botão para ativar/desativar o Áudio espacial:
Figura 1. Configuração de áudio espacial.
As configurações ficam disponíveis quando o fone de ouvido está desconectado.
O estado padrão do áudio espacial após o pareamento inicial do fone de ouvido é definido como ativado.
O estado selecionado pelo usuário, ativado ou desativado, persiste em uma reinicialização do smartphone ou em desemparelhar e emparelhar o fone de ouvido.
Comportamento funcional
Formatos de áudio
Os formatos de áudio a seguir PRECISAM ser renderizados pelo efeito de espacialização quando o áudio espacial estiver ativado e o dispositivo de renderização for um fone de ouvido com ou sem Bluetooth:
- AAC, 5.1 canais
- PCM bruto, canais 5.1
Para uma melhor experiência do usuário, recomendamos oferecer suporte aos seguintes formatos/configurações de canal:
- Dolby Digital Plus
- Canais 5.1.2, 7.1, 7.1.2, 7.1.4
Reprodução de conteúdo estéreo
O conteúdo estéreo não pode ser renderizado com o mecanismo de efeito espacial, mesmo que o áudio espacial esteja ativado. Se uma implementação permitir a espacialização de conteúdo em estéreo, ela precisará apresentar uma interface personalizada que permita ao usuário ativar ou desativar esse recurso com facilidade. Quando o áudio espacial estiver ativado, será possível fazer a transição entre a reprodução de conteúdo multicanal espacializado para conteúdo estéreo não espacializado sem exigir nenhuma mudança nas configurações do usuário ou reconexão ou reconfiguração do fone de ouvido. A transição entre conteúdo de áudio espacial e conteúdo estéreo precisa ocorrer com o mínimo de interrupção de áudio.
Usar transições de casos de uso e simultaneidade
Processe casos de uso especiais da seguinte maneira:
- As notificações precisam ser misturadas com o conteúdo de áudio espacial da mesma forma que são com o conteúdo de áudio não espacial.
- Os toques precisam ser permitidos para serem misturados com conteúdo de áudio espacial. No entanto, por padrão, o mecanismo de seleção de áudio pausa o conteúdo de áudio espacial quando há toque.
- Ao atender ou fazer uma chamada telefônica ou videoconferência, a reprodução de áudio espacial precisa ser pausada. A reprodução de áudio espacial precisa ser retomada com as mesmas configurações de áudio espacial quando a chamada terminar. A reconfiguração de um caminho de áudio para alternar do modo de áudio espacial para o modo de conversa precisa acontecer rapidamente e sem problemas para não afetar a experiência de chamada.
Renderização em alto-falantes
O suporte à espacialização do áudio em alto-falantes ou ao modo transaural não é necessário.
Diretrizes para a implementação do rastreamento de cabeça
Esta seção se concentra no áudio espacial dinâmico, que tem requisitos específicos de fones de ouvido.
Interface do usuário
Após a implementação e o pareamento do fone de ouvido com suporte a áudio espacial, valide se a interface tem o seguinte comportamento:
Nas configurações do dispositivo Bluetooth, quando a configuração Áudio espacial do fone de ouvido está ativada, a configuração Rastreamento da cabeça aparece em Áudio espacial:
Figura 2. Configuração de áudio espacial e rastreamento da cabeça.
A configuração de rastreamento da cabeça NÃO fica visível quando o áudio espacial está desativado.
O estado padrão do rastreamento da cabeça após o pareamento inicial do fone de ouvido é definido como ativado.
O estado selecionado pelo usuário, ativado ou desativado, precisa persistir após uma reinicialização do smartphone ou após o desemparelhamento e o emparelhamento do fone de ouvido.
Comportamento funcional
Relatórios de pose da cabeça
- As informações de posição da cabeça, nas coordenadas x, y e z, enviadas do headset para o dispositivo Android precisam refletir os movimentos da cabeça do usuário de maneira rápida e precisa.
- O relatório de posição da cabeça sobre a conexão Bluetooth precisa seguir o protocolo definido por HID.
- O fone de ouvido precisa enviar essas informações para o smartphone Android somente quando o usuário ativa o recurso rastreamento da cabeça na interface de configuração do dispositivo Bluetooth.
Desempenho
Latência
A latência de rastreamento da cabeça é definida como o tempo que leva entre o movimento da cabeça capturado pela unidade de medida de inércia (IMU, na sigla em inglês) e a detecção da mudança no som causada por esse movimento pelos transdutores dos fones de ouvido. A latência do rastreamento de cabeça não pode exceder 150 ms.
Taxa de relatórios de pose da cabeça
Quando o rastreamento de cabeça está ativo, o fone de ouvido precisa informar a posição da cabeça em uma base periódica recomendada de aproximadamente 20 ms. Para evitar acionar a lógica de detecção de entrada desatualizada no smartphone durante um jitter de transmissão do Bluetooth, o tempo máximo entre duas atualizações não pode exceder 40 ms.
Otimização de energia
Para otimizar a energia, recomendamos que a implementação use os mecanismos de alternância de codecs Bluetooth e seleção do modo de latência fornecidos pelas interfaces HAL de áudio e HAL de áudio Bluetooth.
As implementações do AOSP do framework de áudio e da pilha Bluetooth já oferecem suporte aos sinais para controlar a troca de codec. Se a implementação do OEM usar o HAL de áudio principal para áudio Bluetooth, conhecido como modo de redução de codec, o OEM precisa garantir que o HAL de áudio retransmita esses sinais entre o HAL de áudio e a pilha Bluetooth.
Mudança de codec
Quando o áudio espacial dinâmico e o rastreamento da cabeça estiverem ativados, use um codec de baixa latência, como o Opus. Ao reproduzir conteúdo de áudio não espacial, use um codec de baixo consumo, como o Advanced Audio Coding (AAC).
Siga estas regras durante a troca de codec:
- Rastreie apenas a atividade nos seguintes streams de saída HAL de áudio:
- Saída de spatializer dedicada
- Transmissões específicas de mídia, como buffer profundo ou reprodução de descarga compactada
Quando todos os streams relevantes estiverem inativos e o stream do equalizador espacial for iniciado, inicie o stream de Bluetooth com
isLowLatency
definido comotrue
para especificar um codec de baixa latência.Quando todos os streams relevantes estiverem inativos e um stream de mídia for iniciado, inicie o stream Bluetooth com
isLowLatency
definido comofalse
para especificar um codec de baixo consumo de energia.Se um stream de mídia estiver ativo e o stream do spatializer for iniciado, reinicie o stream de Bluetooth com
isLowLatency
definido comotrue
.
No lado do fone de ouvido, ele precisa oferecer suporte a decodificadores de baixa latência e baixo consumo de energia e implementar o protocolo padrão de seleção de codec.
Ajuste do modo de latência
O ajuste do modo de latência ocorre quando o codec de baixa latência é selecionado.
Com base na ativação ou desativação do rastreamento de cabeça, o ajuste do modo de latência usa os mecanismos disponíveis para reduzir ou aumentar a latência e alcançar o melhor compromiso entre latência, potência e qualidade de áudio. Quando o áudio espacial e o rastreamento da cabeça estão ativados, o modo de baixa latência é escolhido. Quando o áudio espacial está ativado e o rastreamento da cabeça está desativado, o modo de latência livre é selecionado. O ajuste de latência proporciona economia de energia significativa e maior robustez da conexão de áudio Bluetooth quando apenas o áudio espacial estático é solicitado. O mecanismo de ajuste de latência mais comum é a redução ou a extensão do tamanho do buffer de jitter no fone de ouvido Bluetooth.
Consulte Rastreamento de cabeça por áudio LE para ajustes do modo de latência para áudio LE.