Detalhes técnicos

O diagrama a seguir ilustra os componentes do sistema que interagem com o discador:

Componentes que interagem com o discador

Figura 1. Componentes que interagem com o discador

  • Interface do sistema. Faceta de navegação inferior para hospedar o botão do smartphone, que registra a intent intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end. Isso inicia a atividade principal do usuário, TelecomActivity.

  • Acesso rápido aos apps. Gerencia toda a lista de apps. O discador declara TelecomActivity com android.intent.category.LAUNCHER. Selecionar o app de telefone na lista de apps do iniciador exibe TelecomActivity.

  • Widget de início. Na referência do AOSP, não há um widget de início. Os OEMs podem considerar adicionar um widget de início para o discador para mostrar o estado do smartphone conectado atual, além de outras informações.

  • Central de notificações

    • A notificação de alerta (HUN, na sigla em inglês) é exibida para chamadas recebidas. Quando o discador InCallServiceImpl recebe uma chamada, ele envia uma HUN para a central de notificações, que mostra os detalhes da chamada, como número de telefone ou informações de contato. O discador também mostra dois botões de ação, "Atender" e "Recusar". Ao tocar no botão "Atender", a chamada é atendida e InCallServiceImpl processa a chamada ativa para mostrar a interface do discador e dispensar o HUN. Clicar no HUN mostra a página InCall em tela cheia com os botões "Responder" e "Rejeitar".

    • A notificação aparece para chamadas perdidas não lidas. Clicar na notificação mostra a página "Histórico de chamadas" e marca as ligações perdidas como lidas. Tocar no botão "Call Back" faz uma chamada e mostra a interface do usuário do InCall.

  • Assistente. Os usuários podem pedir a um assistente para fazer uma chamada que pode mostrar a interface do usuário do Telefone.

  • Google Maps. Ligar para um comerciante pelo Google Maps envia a intent DIAL com números de telefone extras, que iniciam a página do discador para chamadas rápidas.

  • CarInputService. Monitora a tecla física dos botões "Ligar" e "Encerrar chamada" no volante. Ao pressionar o:

    • O botão de chamada do volante, quando não há uma ligação recebida, envia a intent DIAL e exibe a página do discador.

    • O botão de chamada do volante, quando há uma chamada recebida, faz com que o TelecomManager atenda a chamada.

    • O botão "Encerrar chamada" do volante, quando há uma chamada recebida, o TelecomManager encerra a chamada.

  • Bluetooth

    • PBAPClient. Faz o download de contatos de um smartphone e grava no provedor de contatos. Para cada smartphone conectado, uma conta é criada com o endereço MAC Bluetooth do dispositivo como nome e com.android.bluetooth.pbapsink (@string/pbap_account_type definido em packages/apps/Bluetooth) como o tipo de conta. Os contatos gravados no provedor de contatos são gravados com as informações da conta e são apagados quando o telefone é desconectado. O PBAPClient não interage diretamente com o discador, mas grava contatos no provedor de contatos. O discador lê os contatos do provedor de contatos.

    • HfpClientConnectionService: gerencia a chamada Bluetooth pelo HFP e informa a chamada aos serviços de telecomunicações.

  • Telecom. O framework do Android Telecom gerencia chamadas de áudio e vídeo em um dispositivo Android. Como o app Telefone é o app de telefone padrão, ele implementa as APIs InCallService e InCallController vai vincular a implementação do InCallService do app Telefone para processar ligações. Para mais detalhes, consulte Criar um app de smartphone substituto e Como se tornar o app de smartphone padrão.

  • Configurações do sistema. O discador monitora a lista de dispositivos conectados por HFP e exibe uma mensagem de erro quando nenhum smartphone está conectado ao discador por Bluetooth. Na referência do AOSP, o botão "Conectar ao Bluetooth" vincula os usuários à página de configurações do Bluetooth do sistema para parear um novo dispositivo ou se conectar a um dispositivo pareado.

  • Motor de distração do motorista. Esse serviço do sistema Android impõe restrições de UX com base no estado de direção do carro. O discador precisa executar todas as restrições de distração que impulsionam a UX.Para isso, ele precisa ouvir o CarUXRestrictionManager e implementar todas as políticas. O discador precisa:

    • Conecte-se à biblioteca Car e receba uma instância de CarUXRestrictionManager.

    • Assine as atualizações na lista de CarUxRestrictions e implemente-as conforme documentado.

    • De importância particular para o discador:

      • A página de configurações é otimizada para o veículo. O usuário não conseguia acessar a página "Configurações do discador" ao dirigir. Ao tocar no menu Configurações na barra de ações, uma tela de bloqueio é exibida para impedir que o usuário acesse as Configurações enquanto dirige. Se a página "Configurações" já estiver visível, a tela de bloqueio vai aparecer para interromper a interação do usuário.

      • Não é possível acessar as configurações do sistema enquanto você dirige. Na página de erro, quando nenhum dispositivo Bluetooth está conectado, um botão "Conectar ao Bluetooth" mostra a página de configurações do Bluetooth do sistema. A UXR desse botão é totalmente restrita. Ao dirigir, clicar nesse botão mostra uma mensagem de erro para informar ao usuário que ele precisa estacionar o carro primeiro e depois realizar a ação.

      • O usuário não pode iniciar o fluxo de adição aos favoritos enquanto dirige. O botão "Adicionar um favorito" está desativado.

Fluxos de usuário

Dialer principal

As diferentes páginas do discador estão listadas abaixo.

Página principal do discador

Figura 2. Página principal do discador

Gerenciamento de chamadas

O fluxo do processo de transferência de chamadas é apresentado abaixo:

Gerenciamento de chamadas

Figura 3. Gerenciamento de chamadas

Notificações

As diferentes páginas de notificação são exibidas abaixo:

Notificações

Figura 4. Notificações

Status do InCall

O fluxo da página do InCall é mostrado abaixo:

Página do InCall

Figura 5. Página do InCall

As telas de pesquisa são:

Pesquisar

Figura 6. Pesquisar

Configurações

As opções de configurações são:

Configurações

Figura 7. Configurações