A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Detalles técnicos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En el siguiente diagrama, se ilustran los componentes del sistema que interactúan con el Marcador:

Figura 1: Componentes que interactúan con el marcador
-
IU del sistema. Faceta de navegación inferior para alojar el botón Teléfono, que registra el intent intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end
.
Esto inicia la actividad principal del usuario, TelecomActivity
.
-
Selector de aplicaciones. Administra toda la lista de apps. El selector declara TelecomActivity con android.intent.category.LAUNCHER
. Si seleccionas la app de teléfono de la lista de apps del selector, se mostrará TelecomActivity.
-
Widget de la pantalla principal. En la referencia de AOSP, no hay un widget de Home. Los OEMs deberían considerar agregar un widget de la pantalla principal para el Dialer para mostrar el estado del teléfono conectado actual (además de otra información).
-
Centro de notificaciones
-
Se muestra una notificación emergente (HUN) para las llamadas entrantes. Cuando el marcador InCallServiceImpl
recibe una llamada entrante, publica un HUN en el centro de notificaciones, que muestra los detalles de la llamada, como el número de teléfono o la información de contacto. El marcador también muestra dos botones de acción: Responder y Rechazar. Cuando presionas el botón Responder, se responde la llamada y InCallServiceImpl
controla la llamada activa para mostrar la IU de llamada del teléfono y descartar el HUN. Si haces clic en el HUN, se mostrará la página de InCall en pantalla completa con los botones Responder y Rechazar.
-
Aparece una notificación de llamadas perdidas no leídas. Si haces clic en la notificación, se mostrará la página Historial de llamadas y se marcarán las llamadas perdidas como leídas. Si presionas el botón Llamar, se realiza una llamada y se muestra la interfaz de usuario de InCall del Dialer.
-
Asistente. Los usuarios pueden pedirle a un asistente que realice una llamada que pueda mostrar la interfaz de usuario de Teléfono en llamada.
-
Google Maps. Cuando llamas a un comercio desde Google Maps, se envía el intent DIAL con números de teléfono adicionales, lo que iniciará la página de Dialpad para realizar llamadas rápidas.
-
CarInputService. Supervisa la tecla física de los botones de llamada y finalizar llamada en el volante. Presiona las siguientes teclas:
-
El botón de llamada del volante, cuando no hay una llamada entrante, envía el intent DIAL y muestra la página del teclado del teléfono.
-
El botón de llamada del volante cuando hay una llamada entrante hace que TelecomManager responda la llamada.
-
Botón Finalizar llamada del volante cuando hay una llamada entrante, el TelecomManager finaliza la llamada.
-
Bluetooth
-
PBAPClient. Descarga contactos de un teléfono y escribe en el proveedor de contactos. Para cada teléfono conectado, se crea una cuenta con la dirección MAC de Bluetooth del dispositivo como nombre de la cuenta y com.android.bluetooth.pbapsink
(@string/pbap_account_type
definido en packages/apps/Bluetooth
) como el tipo de cuenta. Los contactos que se escriben en el proveedor de contactos se escriben con la información de la cuenta y se borran cuando se desconecta el teléfono. PBAPClient
no interactúa directamente con el Marcador, sino que escribe contactos en el Proveedor de contactos. El selector de llamadas lee los contactos del proveedor de contactos.
-
HfpClientConnectionService
. Administra la llamada Bluetooth a través de HFP y la informa a los servicios de telecomunicaciones.
-
Telecom. El framework de Android Telecom administra las llamadas de audio y video en un dispositivo Android. Como Teléfono es la app de teléfono predeterminada, implementa las APIs de InCallService
y InCallController
vinculará la implementación de InCallService de Teléfono para controlar las llamadas. Para obtener más detalles, consulta Cómo crear una app de teléfono de reemplazo y Cómo convertirse en la app de teléfono predeterminada.
-
Configuración del sistema. El selector supervisa la lista de dispositivos conectados a HFP y muestra un mensaje de error cuando no hay teléfonos conectados al selector a través de Bluetooth. En la referencia de AOSP, el botón Conectar a Bluetooth vincula a los usuarios a la página Configuración de Bluetooth del sistema para vincular un dispositivo nuevo o conectarse a uno vinculado.
-
Motor de distracción del conductor. Este servicio del sistema Android impone restricciones de UX según el estado de conducción del automóvil. El selector debe ejecutar todas las restricciones de distracción de conducción de la UX.Para ello, debe escuchar el CarUXRestrictionManager y, luego, implementar todas las políticas. El teléfono debe cumplir con los siguientes requisitos:
-
Conéctate a la biblioteca de Car y obtén una instancia de CarUXRestrictionManager.
-
Suscríbete a las actualizaciones en la lista de CarUxRestrictions y, luego, impleméntalas como se documenta.
-
De especial importancia para el Dialer:
-
La página de configuración está optimizada para el vehículo. El usuario no pudo acceder a la página de configuración del marcador mientras conducía. Si presionas el menú Configuración desde la barra de acción, se muestra una pantalla de bloqueo para evitar que el usuario acceda a Configuración mientras conduce. Si ya se muestra la página Configuración, aparecerá la pantalla de bloqueo para detener la interacción del usuario.
-
No se puede acceder a la configuración del sistema mientras conduces. En la página de error,
cuando no hay dispositivos Bluetooth conectados, el botón Conectar a Bluetooth muestra la
página de configuración de Bluetooth del sistema. El UXR de este botón está completamente restringido.
Mientras conduces, si haces clic en este botón, se mostrará un mensaje de error para informarle al usuario que primero debe estacionar el automóvil y, luego, realizar la acción.
-
El usuario no puede iniciar el flujo de agregar a favoritos mientras conduce. El botón para agregar un favorito está inhabilitado.
Flujos de usuarios
Dialer Main
A continuación, se proporcionan las diferentes páginas del Dialer.

Figura 2: Página principal del Dialer
Manejo de llamadas
A continuación, se presenta el flujo de proceso de control de llamadas:

Figura 3: Manejo de llamadas
Notificaciones
A continuación, se muestran las diferentes páginas de notificaciones:

Figura 4: Notificaciones
Estado de llamada
A continuación, se muestra el flujo de la página En llamada:

Figura 5: Página de InCall
Buscar
Las pantallas de búsqueda son las siguientes:

Figura 6: Buscar
Configuración
Las opciones de configuración son las siguientes:

Figura 7: Configuración
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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"]]