O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Captura Simultânea

O Android 10 melhora a experiência do usuário que requer que mais de uma captura de áudio ativa aconteça simultaneamente, por exemplo, se o usuário deseja controlar uma chamada VoIP ou gravador de vídeo com comandos de voz fornecidos por um serviço de acessibilidade.

A estrutura de áudio implementa a política permitindo que apenas alguns aplicativos privilegiados capturem simultaneamente com aplicativos regulares.

A política de simultaneidade é implementada silenciando o áudio capturado, em vez de impedir que um aplicativo inicie a captura. Isso permite que a estrutura aborde dinamicamente as alterações no número e nos tipos de casos de uso de captura ativa, sem impedir que um aplicativo comece a capturar em um caso em que possa recuperar o acesso total ao microfone depois que outro aplicativo tenha concluído a captura.

A consequência para o HAL de áudio e o subsistema de áudio é que eles devem oferecer suporte a vários fluxos de entrada ativos simultaneamente, mesmo se, em alguns casos, apenas um fluxo estiver fornecendo áudio não silencioso para um cliente ativo.

Requisitos de CDD

Veja CDD para os requisitos para suporte a captura simultânea.

Capture situações de áudio HAL

Um cenário de captura simultânea pode resultar em diferentes situações em termos de número de fluxos de entrada ativos, seleção de dispositivo de entrada ou configuração de pré-processamento.

A simultaneidade pode ocorrer entre o seguinte:

  • Vários fluxos de entrada do processador de aplicativo (AP)
  • Fluxos de entrada e uma chamada de voz
  • Fluxos de entrada e um DSP de áudio implementando uma detecção de hotword de baixo consumo

Atividade simultânea de fluxos de entrada AP

A política de áudio arquivo de configuração audio_policy_configuration.xml é usado pela estrutura de áudio para determinar quantos fluxos de entrada pode ser aberta e ativa simultaneamente.

No mínimo, o HAL áudio deve suportar pelo menos uma instância de cada perfil de entrada ( mixPort de papel sink ) listados no arquivo de configuração aberta e ativa.

Seleção de dispositivo

Quando vários clientes ativos são anexados ao mesmo fluxo de entrada HAL, a estrutura seleciona o dispositivo apropriado para esse fluxo de entrada com base na prioridade do caso de uso.

Quando vários fluxos de entrada estão ativos, cada fluxo pode ter uma seleção de dispositivo diferente.

Se a tecnologia for compatível, é recomendado que o HAL de áudio e o subsistema permitam que diferentes fluxos sejam capturados de diferentes dispositivos, como um fone de ouvido Bluetooth e microfone embutido.

Se houver uma incompatibilidade (por exemplo, dois dispositivos compartilham a mesma interface de áudio digital ou back end), o HAL de áudio deve escolher qual stream controla a seleção do dispositivo.

Nesse caso:

  • O estado resultante deve ser consistente e oferecer a mesma seleção de dispositivo quando o mesmo cenário for repetido.
  • Quando o estado de simultaneidade termina, o fluxo ativo restante deve ser roteado para o dispositivo inicialmente solicitado neste fluxo.

Se uma ordem de prioridade é definido pelo HAL áudio entre casos de uso activas, seguir a mesma ordem como encontrado em source_priority() em frameworks/av/services/audiopolicy/common/include/policy.h

Seleção de pré-processamento

O quadro de áudio podem solicitar o pré-processamento em um fluxo de entrada usando os addEffect() ou removeEffect() métodos de HAL.

Para pré-processamento em um determinado fluxo de entrada, a estrutura de áudio permite apenas a configuração correspondente ao caso de uso ativo de maior prioridade no fluxo de entrada. No entanto, pode haver alguma sobreposição durante a ativação e desativação do caso de uso, fazendo com que dois processos ativos simultâneos (por exemplo, duas instâncias do cancelador de eco) sejam executados no mesmo fluxo de entrada. Nesse caso, a implementação do HAL escolhe qual solicitação é aceita; ele rastreia as solicitações ativas e restaura o estado correto quando um dos processos é desabilitado.

Quando vários fluxos de captura estão ativos simultaneamente, diferentes pedidos de pré-processamento podem ser executados em fluxos diferentes.

As implementações do subsistema HAL e de áudio devem permitir que diferentes pré-processamento sejam aplicados a diferentes fluxos, mesmo se eles compartilharem o mesmo dispositivo de entrada. Ou seja, o pré-processamento deve ser aplicado após a demuxing dos fluxos da fonte de captura primária.

Se não for possível por razões técnicas sobre um determinado subsistema de áudio, o HAL áudio deve aplicar regras de prioridade semelhantes aos listados na seleção de dispositivos .

Chamada de voz simultânea e captura do AP

A captura do AP pode acontecer enquanto uma chamada de voz está ativa. Esta situação não é nova no Android 10 e não está diretamente relacionada ao recurso de captura simultânea, mas é útil mencionar as diretrizes para este cenário.

Dois tipos diferentes de captura do AP são necessários durante uma chamada.

Capturando chamadas RX e TX

Chamada captura de RX e TX é acionado pelo uso de fonte de áudio AudioSource.VOICE_UPLINK ou AudioSource.VOICE_DOWNLINK , e / ou dispositivo AudioDevice.IN_TELEPHONY_RX .

HALs áudio deve expor no perfil de entrada ( mixPort de papel sink ) com uma rota disponível a partir de dispositivo AudioDevice.IN_TELEPHONY_RX .

Quando uma chamada é conectada (modo de áudio é AudioMode.IN_CALL ), deve ser possível ter pelo menos um fluxo de captura ativa de dispositivo AudioDevice.IN_TELEPHONY_RX .

Captura de dispositivos de entrada quando uma chamada está ativa

Quando uma chamada está ativa (modo de áudio é AudioMode.IN_CALL ), deve ser possível abrir e ativar fluxos de entrada da AP conforme especificado no ponto actividade concomitante de fluxos de entrada AP .

No entanto, a prioridade para a seleção do dispositivo e pré-processamento deve ser sempre orientada pela chamada de voz no caso de haver um conflito com as solicitações dos fluxos de entrada do AP.

Captura simultânea de DSP e AP

Quando o subsistema de áudio contém um DSP que suporta contexto de áudio de baixa potência ou funções de detecção de hotword, a implementação deve oferecer suporte à captura simultânea do AP e do DSP de áudio. Isto inclui tanto a captura pelo DSP durante a fase inicial de detecção e captura pelo AP com AudioSource.HOTWORD após a detecção é desencadeada pelo DSP.

Isto deve ser refletido pela bandeira captura simultânea relatado pelo HAL gatilho de som através do descritor de implementação: ISoundTriggerHw.Properties.concurrentCapture = true .

O HAL áudio também deve expor e perfil de entrada específica para captura hotword identificado pelo bandeira AudioInputFlag.HW_HOTWORD . A implementação deve suportar a abertura e ativação de um número de streams neste perfil pelo menos igual ao número de modelos de som que podem ser carregados simultaneamente pelo acionador de som HAL.

A captura deste perfil de entrada deve ser possível enquanto outros perfis de entrada estão ativos.

Implicação para implementações do Assistant

Requisitos de uso de dados e notificação do usuário

Como o uso simultâneo do microfone, se abusado, pode vazar dados privados do usuário, precisamos que as seguintes condições e garantias sejam aplicadas aos aplicativos pré-carregados com privilégios que pedem para manter a função de Assistente.

  • Os dados coletados pelo microfone não devem sair do dispositivo, a menos que o usuário esteja interagindo com o Assistente. Por exemplo, depois que a hotword é acionada.
  • Os aplicativos que ouvem simultaneamente devem fornecer dicas visuais ao usuário depois que a hotword for detectada. Isso ajuda os usuários a entender que outras conversas passariam por um aplicativo diferente, como o Assistant.
  • Os usuários devem ter a capacidade de desligar o microfone ou os gatilhos do Assistente.
  • Quando as gravações de áudio são armazenadas, os usuários devem ter a capacidade de acessar, revisar e excluir as gravações a qualquer momento.

Melhorias funcionais para Android 10

Assistentes não bloqueando uns aos outros

No Android 9 ou inferior, quando há dois Assistentes sempre ligados no dispositivo, apenas um deles pode estar ouvindo sua hotword. Portanto, era necessário alternar entre os dois Assistentes. No Android 10, o assistente padrão pode ouvir simultaneamente com o outro assistente. Isso resulta em uma experiência muito mais suave para os usuários com os dois assistentes.

Apps com microfone aberto

Quando aplicativos como Shazam ou Waze mantêm o microfone aberto, o Assistente padrão ainda pode estar ouvindo a hotword.

Para aplicativos do Assistente não padrão, não há mudança no comportamento do Android 10.

Exemplo de implementação de áudio HAL

Um exemplo de uma implementação HAL áudio em conformidade com as diretrizes contidas neste documento podem ser encontradas no AOSP .