O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Captura Simultânea

O Android 10 melhora a experiência do usuário que exige 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 seu á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 suportar vários fluxos de entrada ativos simultaneamente, mesmo que, em alguns casos, apenas um fluxo esteja fornecendo áudio não silencioso para um cliente ativo.

Requisitos de CDD

Consulte o CDD para obter os requisitos para suporte de 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 acontecer 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

O arquivo de configuração de política de áudio audio_policy_configuration.xml é usado pela estrutura de áudio para determinar quantos fluxos de entrada podem ser abertos e ativos simultaneamente.

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

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 for definida pelo HAL de áudio entre os casos de uso ativos, siga a mesma ordem encontrada em source_priority() em frameworks/av/services/audiopolicy/common/include/policy.h

Seleção de pré-processamento

A estrutura de áudio pode solicitar pré-processamento em um fluxo de entrada usando os métodos HAL addEffect() ou removeEffect() .

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 diferentes fluxos.

O HAL e as implementações do subsistema 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 motivos técnicos em um determinado subsistema de áudio, o HAL de áudio deve aplicar regras de prioridade semelhantes às listadas em Seleção de dispositivo .

Chamada de voz simultânea e captura do AP

A captura do AP pode acontecer enquanto uma chamada de voz está ativa. Essa 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

A captura de chamadas RX e TX é acionada pelo uso da fonte de áudio AudioSource.VOICE_UPLINK ou AudioSource.VOICE_DOWNLINK e / ou dispositivo AudioDevice.IN_TELEPHONY_RX .

HALs de áudio devem ser mixPort no perfil de entrada ( mixPort de sink de funções) com uma rota disponível do dispositivo AudioDevice.IN_TELEPHONY_RX .

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

Captura de dispositivos de entrada quando uma chamada está ativa

Quando uma chamada está ativa (o modo de áudio é AudioMode.IN_CALL ), deve ser possível abrir e ativar fluxos de entrada do AP, conforme especificado na seção Atividade simultânea de fluxos de entrada do 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. Isso inclui a captura pelo DSP durante a fase de detecção inicial e a captura pelo AP com AudioSource.HOTWORD após a detecção ser acionada pelo DSP.

Isso deve ser refletido pelo sinalizador de captura simultânea relatado pelo acionador de som HAL por meio do descritor de implementação: ISoundTriggerHw.Properties.concurrentCapture = true .

O HAL de áudio também deve expor um perfil de entrada específico para a captura de hotword identificada pelo sinalizador 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 de 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 após a detecção da hotword. 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 ativos 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 implementação de HAL de áudio em conformidade com as diretrizes deste documento pode ser encontrado no AOSP .