O diagrama a seguir ilustra os componentes do sistema 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 eInCallServiceImpl
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 empackages/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. OPBAPClient
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
eInCallController
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.
Figura 2. Página principal do discador
Gerenciamento de chamadas
O fluxo do processo de transferência de chamadas é apresentado abaixo:
Figura 3. Gerenciamento de chamadas
Notificações
As diferentes páginas de notificação são exibidas abaixo:
Figura 4. Notificações
Status do InCall
O fluxo da página do InCall é mostrado abaixo:
Figura 5. Página do InCall
Pesquisar
As telas de pesquisa são:
Figura 6. Pesquisar
Configurações
As opções de configurações são:
Figura 7. Configurações