Visão geral da biblioteca Telecom

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A biblioteca Telecom do Android gerencia chamadas de áudio e vídeo em um dispositivo Android. Isso inclui chamadas com base em chip (por exemplo, o uso da biblioteca de telefonia) e chamadas VoIP fornecidas por implementadores da API ConnectionService.

Os dois principais componentes com os quais a Telecom lida são ConnectionServices e InCallServices. Uma implementação ConnectionService é responsável por conectar chamadas a outra parte usando algum meio (por exemplo, VoIP). A implementação ConnectionService mais comum em um telefone é o ConnectionService de telefonia, responsável por conectar as chamadas das operadoras. Uma implementação InCallService é responsável por fornecer uma interface do usuário para chamadas gerenciadas pela Telecom e oferecer ao usuário uma maneira de controlar e interagir com essas chamadas. O app Telefone integrado com um dispositivo é o exemplo mais comum de implementação de um InCallService.

A Telecom atua como uma central telefônica, roteando as chamadas fornecidas pelas implementações ConnectionService para a interface do usuário de chamada fornecida pelas implementações InCallService.

É recomendável a implementação de APIs Telecom nos casos abaixo:

  1. Você quer criar um substituto para o app Telefone do sistema.
  2. Você quer criar uma solução de chamada que se integre à experiência de chamada do Android.

Criar um app telefone substituto

Caso você queira criar um substituto para o app Telefone padrão em um dispositivo Android, implemente a API InCallService. É importante lembrar que um InCallService não deve ter recursos de chamada e consistir unicamente da interface do usuário para chamadas. O InCallService precisa gerenciar todas as chamadas conhecidas pela biblioteca Telecom. Ele não deve fazer suposições sobre a natureza das chamadas (por exemplo, supor que elas sejam chamadas de telefonia com base em chip) e não deve implementar restrições de chamada com base em nenhum ConnectionService (por exemplo, ele não deve reforçar restrições de telefonia para chamadas de vídeo).

Para saber mais, consulte InCallService.

Integrar uma solução de chamada

Se quiser integrar sua solução de chamada ao Android, você terá as seguintes opções:

  1. Implementar a API ConnectionService autogerenciada: isso é ideal para desenvolvedores de apps de chamada autônomos que não pretendem exibir as chamadas no app telefone padrão e que não querem outras chamadas sendo exibidas na interface do usuário deles. Tradicionalmente, os apps de chamada autônomos dependem de ouvir o status do smartphone para tentar determinar quando outras chamadas estão sendo realizadas. Esse é um problema porque o status do smartphone não leva em consideração outros apps de chamada que o usuário possa ter instalado. O uso de um ConnectionService autogerenciado ajuda você a garantir que seu app realizará interoperações não somente com as chamadas de telefonia nativas no dispositivo, mas também com outros apps de chamada autônomos que implementarem essa API. A API autogerenciada ConnectionService também gerencia foco e roteamento de áudio para você. Para saber detalhes, consulte ConnectionServices autogerenciados.
  2. Implementar a API ConnectionService gerenciada: facilita o desenvolvimento de uma solução de chamada que depende do aplicativo telefone do dispositivo atual (consulte getDefaultDialerPackage()) para fornecer a interface do usuário para chamadas. Um exemplo pode ser uma implementação de chamada SIP de terceiros ou um serviço de chamada VoIP. Um ConnectionService por si só fornece somente os meios de conexão de chamadas, mas não tem interface do usuário associada. Para saber detalhes, consulte ConnectionService.
  3. Implementar as APIs InCallService e ConnectionService: ideal se você quiser criar seu próprio ConnectionService com base na solução de chamadas, completo, com interface do usuário própria e capaz de mostrar outras chamadas do Android na mesma interface do usuário. Ao usar essa abordagem, você ainda precisa garantir que seu InCallService não faça suposições sobre a origem das chamadas exibidas por ele. Além disso, você precisa verificar se sua implementação ConnectionService ainda funciona sem que o app telefone padrão esteja configurado para o InCallService personalizado.

Fazer a triagem de chamadas

Os dispositivos que executam Android 10 (nível de API 29) e versões superiores fornecem ao seu aplicativo uma maneira de identificar chamadas que não estão no catálogo de endereços do usuário como possíveis chamadas de spam e fazer com que elas sejam rejeitadas de forma silenciosa em nome do usuário. As informações sobre essas chamadas bloqueadas são registradas como chamadas bloqueadas no registro de chamadas para fornecer maior transparência ao usuário com relação a chamadas perdidas. O uso dessa nova API elimina a necessidade de ter permissões READ_CALL_LOG do usuário para fornecer a funcionalidade de identificador de chamadas e da triagem de chamadas.

Redirecionar uma chamada

Nos dispositivos que executam Android 10 (nível de API 29) e versões superiores, os intents de chamada são tratados de forma diferente do que ocorre nos dispositivos que executam o Android 9 e versões anteriores. A transmissão NEW_OUTGOING_CALL é obsoleta e foi substituída pela CallRedirectionService API. A API CallRedirectionService fornece as interfaces para você modificar as chamadas realizadas pela plataforma Android. Por exemplo, aplicativos de terceiros podem cancelar chamadas e redirecioná-las por VoIP.