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

Compatível com aplicativos de chamadas de terceiros

O Android 9 fornece APIs para oferecer melhor suporte a aplicativos de chamada de terceiros (3P). 3P aplicativos que chamam geralmente dependem de APIs de telefonia, como a PHONE_STATE broadcast para co-existir ao lado de telefonemas transportadora. Como consequência, os aplicativos de chamadas 3P devem dar prioridade às chamadas da operadora e, muitas vezes, rejeitar silenciosamente as chamadas recebidas no aplicativo ou encerrar uma chamada em andamento para abrir caminho para uma chamada da operadora.

As APIs no Android 9 oferecem suporte a cenários de chamadas simultâneas entre aplicativos 3P e chamadas de operadora. Isso possibilita, por exemplo, receber uma chamada 3P enquanto estiver em uma chamada da operadora. A estrutura assume a responsabilidade de garantir que a chamada da operadora seja retida quando o usuário se envolver na chamada 3P.

Em Android 9, apps chamando 3P são encorajados a implementar a auto-gerida ConnectionService API. Para mais informações sobre como construir um aplicativo chamando usando esta API, consulte Criar um aplicativo chamado .

O auto de gestão ConnectionService API também oferece aos desenvolvedores a oportunidade de opt-in para ter chamadas em seu aplicativo registrado no registro de chamadas do sistema (veja EXTRA_LOG_SELF_MANAGED_CALLS ). Acordo com os requisitos da definição de documento de compatibilidade Android (CDD) (secção 7.4.1.2), você deve garantir o discador / app telefone exibe essas entradas de registro de chamada e mostra o nome do aplicativo chamando 3P onde a chamada foi originada (para um exemplo de como o aplicativo AOSP discador atende a esse requisito, consulte entradas de log chamada de 3P aplicativos que chamam ).

Apps são responsáveis por definir CAPABILITY_SUPPORT_HOLD e CAPABILITY_HOLD em conexões de seus aplicativos. No entanto, é possível que um aplicativo não consiga reter uma chamada em algumas circunstâncias. A estrutura inclui disposições para resolver esses tipos de casos.

Cenários

Você deve modificar seu aplicativo discador para lidar com os seguintes cenários.

Tratamento de chamadas recebidas que desconectam uma chamada em andamento

Em um cenário onde há uma chamada 3P em andamento (por exemplo, em uma chamada SuperCaller) que não suporta espera, e o usuário recebe uma chamada móvel (por exemplo, através de sua operadora FooCom), seu aplicativo de discador / telefone deve indicar ao usuário que atender a chamada de rede móvel encerrará a chamada 3P em andamento.

Esta experiência do usuário é importante porque um aplicativo de chamada 3P pode ter uma chamada em andamento que não pode ser retida pela estrutura. Atender uma nova chamada móvel faz com que a chamada 3P em andamento seja desconectada.

Consulte a interface do usuário abaixo para obter um exemplo:

Chamada recebida desconectando uma chamada 3P em andamento
Figura 1. chamada de entrada, o qual desliga uma chamada em curso 3P

Seu aplicativo discador pode verificar se uma chamada recebida faz outra chamada para ser desligado, verificando os extras de chamadas . Certifique-se que EXTRA_ANSWERING_DROPS_FG_CALL está definido para TRUE , e EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME está definido como o nome do aplicativo cuja chamada é desligada após atender a chamada móvel de entrada.

Entradas de registro de chamadas de aplicativos de chamadas 3P

Os desenvolvedores de aplicativos 3P chamando pode opt-in para ter chamadas em seu aplicativo registrado no registro de chamadas do sistema (veja EXTRA_LOG_SELF_MANAGED_CALLS ). Isso significa que é possível ter entradas no registro de chamadas que não sejam para chamadas de rede móvel.

Quando o aplicativo discador AOSP exibe entradas de registro de chamadas relacionadas a um aplicativo de chamada 3P, o ​​nome do aplicativo onde a chamada ocorreu é exibido no registro de chamadas, conforme ilustrado abaixo:

Entrada de registro de chamadas com aplicativo de chamadas 3P
Figura entrada de log 2. Chamar com o nome de 3P aplicativo convidando aplicativo discador

Para determinar o nome de um aplicativo associado com uma entrada de registo de chamadas, use o PHONE_ACCOUNT_COMPONENT_NAME e PHONE_ACCOUNT_ID colunas no provedor de registro de chamadas para criar uma instância de PhoneAccountHandle , que identifica a origem de uma entrada de registro de chamada. Consulta TelecomManager para obter os detalhes para o PhoneAccount.
Para determinar se uma entrada de registo de chamadas é de um aplicativo 3P chamando, verificação PhoneAccount capacidades para ver se CAPABILITY_SELF_MANAGED é conjunto.

O getLabel método do retornado PhoneAccount retorna o nome do aplicativo associado com uma entrada de registro de chamadas a partir do aplicativo chamando 3P.

Validação

Para testar se seu dispositivo oferece suporte a aplicativos de chamada 3P, use o aplicativo de teste Telecomm, que implementa a API ConnectionService autogerenciada. O aplicativo está localizado em /packages/services/Telecomm/testapps/ .

  1. Construa o aplicativo de teste a partir da raiz do seu repositório de origem Android usando:

    mmma packages/services/Telecomm/testapps/

  2. Instale o apk compilação usando adb install -g -r <apk path> . Um ícone de amostra autogerenciada é então adicionado ao seu inicializador.

  3. Toque no ícone para abrir o aplicativo de teste.

Tratamento de chamadas recebidas que desconectam uma chamada em andamento

Siga estas etapas para verificar se uma chamada recebida desconecta uma chamada 3P em andamento.

Aplicativo de teste para aplicativos de chamadas 3P
Figura 3. aplicação de teste com implementações de amostra do ConnectionService API autogerido
  1. Desmarque a opção segurável.
  2. Toque de saída para iniciar uma nova chamada de saída da amostra.
  3. Toque no botão ACTIVE para fazer a chamada ir ativa.
  4. Ligue para o número de telefone do dispositivo em teste com outro telefone. Isso invoca o cenário em que seu discador recebe o nome de um aplicativo, que terá sua chamada desconectada.
  5. Quando terminar, toque no botão Desligar no aplicativo de teste.

Entradas de registro de chamadas de aplicativos de chamadas 3P

Depois de concluir as etapas acima, o aplicativo de teste deve ter registrado uma chamada para o registro de chamadas do sistema. Para confirmar se o dispositivo registra chamadas de aplicativos de chamadas 3P, abra seu aplicativo discador e confirme se a chamada aparece no registro de chamadas do sistema.