A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Detalhes técnicos
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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 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.

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
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Technical details\n\nThe following diagram illustrates the system components that interact with Dialer:\n\n**Figure 1.** Components that interact with Dialer\n\n- **System UI.** Lower navigation facet to host the Phone button, which\n registers the `intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end` intent.\n This starts the user's main activity, `TelecomActivity`.\n\n- **App Launcher.** Manages the entire app list. Dialer declares\n TelecomActivity with `android.intent.category.LAUNCHER`. Selecting the phone app from\n the launcher's app list displays TelecomActivity.\n\n- **Home widget.** In AOSP reference, there is no Home widget. OEMs might want to\n consider adding a Home widget for Dialer to display the state of the current connected phone (as\n well as other information).\n\n- **Notification Center**\n\n - **Heads Up Notification (HUN) is displayed for incoming calls.** When the Dialer\n `InCallServiceImpl` receives an incoming call, Dialer posts a HUN to the\n Notification center, which shows the call details, such as phone number or contact info.\n Dialer also displays two action buttons, Answer and Decline. By tapping Answer button,\n the call is answered and `InCallServiceImpl` handles the active call to show\n Dialer's in call UI and dismisses the HUN. Clicking on the HUN displays the fullscreen\n InCall page with the Answer and Reject buttons.\n\n - **Notification appears for unread missed calls.** Clicking on the\n notification displays the Call History page and marks missed calls as read. Tapping the\n Call Back button places a call and displays the Dialer's InCall user interface.\n\n- **Assistant.** Users can ask an assistant to make a call that may display the\n Dialer InCall user interface.\n\n- **Google Maps.**Calling a merchant from Google Maps sends the DIAL\n intent with extras of phone numbers which will start Dialpad page for quick dialing.\n\n- **CarInputService.**Monitors the physical key of the Call and End Call\n buttons on the steering wheel. Pressing the:\n\n - Call button from the steering wheel when there is no incoming call sends the DIAL\n intent and displays the Dialpad page of Dialer.\n\n - Call button from the steering wheel when there is an incoming call causes the\n TelecomManager to answer the call.\n\n - End Call button from the steering wheel when there is an incoming call, the\n TelecomManager ends the call.\n\n- **Bluetooth**\n\n - **PBAPClient.** Downloads contacts from a phone and writes to the\n contacts provider. For each phone connected, an account is created with the device's\n Bluetooth MAC address as the account name and `com.android.bluetooth.pbapsink`\n (`@string/pbap_account_type` defined in `packages/apps/Bluetooth`) as\n the account type. Contacts written to the contacts provider are written with the account\n information and are cleared when the phone is disconnected. `PBAPClient` doesn't\n interact directly with Dialer but instead writes contacts to the Contacts Provider. Dialer\n reads the contacts from the Contacts Provider.\n\n - **`HfpClientConnectionService`.** Manages the Bluetooth call\n through HFP and reports the call to the Telecom services.\n\n- **Telecom.** The Android Telecom framework manages audio and video calls on an\n Android device. Since Dialer is the default phone app, it implements the\n [InCallService](https://developer.android.com/reference/android/telecom/InCallService.html)\n APIs and `InCallController` will bind the Dialer's InCallService implementation to\n handle calls. For more details, see\n [Create\n a replacement phone app](https://developer.android.com/guide/topics/connectivity/telecom#replacePhoneApp) and\n [Becoming\n the Default Phone App](https://developer.android.com/reference/android/telecom/InCallService.html#becoming-the-default-phone-app).\n\n- **System Settings.** Dialer monitors the HFP-connected device list and displays\n an error message when no phones are connected to dialer through Bluetooth. In the AOSP\n reference, the Connect to Bluetooth button links users to the system Bluetooth Settings\n page to pair a new device or to connect to a paired device.\n\n- **Driver Distraction Engine.** This Android system service imposes UX\n restrictions based on the driving state of the car. Dialer must execute all UX driving\n distraction restrictions.To do so, Dialer must listen to the\n [CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager)\n and implement all policies. Dialer must:\n\n - Connect to the [Car](https://developer.android.com/reference/android/car/Car)\n library and obtain an instance of\n [CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager).\n\n - Subscribe to updates in the list of\n [CarUxRestrictions](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictions)\n and implement them as documented.\n\n - Of particular importance to Dialer:\n\n - **Settings page is vehicle-optimized.** User could not access the\n Dialer Settings page when driving. By tapping on the Settings menu from the action bar,\n a blocking screen is displayed to prevent the user from accessing Settings while\n driving. If the Settings page is already displayed, the blocking screen will pop up to\n stop the user interaction.\n\n - **System settings cannot be accessed while driving.** On the Error page,\n when no Bluetooth devices are connected, a Connect to Bluetooth button displays the\n system Bluetooth settings page. The UXR of this button is fully restricted.\n While driving, clicking on this button displays an error message to inform the\n user to park the car first and then perform the action.\n\n - **User cannot start the add-to-favorite flow while driving.** The Add a\n Favorite button is disabled.\n\nUser flows\n----------\n\n### Dialer Main\n\nThe different pages for Dialer are provided below.\n\n**Figure 2.** Main Dialer page\n\n### Call handling\n\nThe call handing process flow is presented below:\n\n**Figure 3.** Call handling\n\n### Notifications\n\nThe different notifications pages are displayed below:\n\n**Figure 4.** Notifications\n\n### InCall status\n\nThe InCall page flow is shown below:\n\n**Figure 5.** InCall page\n\n### Search\n\nThe Search displays are:\n\n**Figure 6.** Search\n\n### Settings\n\nThe Settings options are:\n\n**Figure 7.** Settings"]]