À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Détails techniques
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le schéma suivant illustre les composants système qui interagissent avec le Dialer:

Figure 1 : Composants qui interagissent avec le clavier
-
UI du système Facette de navigation inférieure pour héberger le bouton Téléphone, qui enregistre l'intent intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end
.
L'activité principale de l'utilisateur, TelecomActivity
, est alors lancée.
-
Lanceur d'applications Gère l'ensemble de la liste des applications. Le Dialer déclare TelecomActivity avec android.intent.category.LAUNCHER
. Si vous sélectionnez l'application Téléphone dans la liste d'applications du lanceur, TelecomActivity s'affiche.
-
Widget d'accueil Dans la référence AOSP, il n'y a pas de widget Home. Les OEM peuvent envisager d'ajouter un widget d'accueil pour le clavier pour afficher l'état du téléphone connecté actuel (ainsi que d'autres informations).
-
Centre de notifications
-
Une notification prioritaire s'affiche pour les appels entrants. Lorsque l'application Téléphone InCallServiceImpl
reçoit un appel entrant, elle publie une notification d'appel manqué dans le centre de notifications, qui affiche les détails de l'appel, tels que le numéro de téléphone ou les coordonnées du contact. L'application Téléphone affiche également deux boutons d'action, "Répondre" et "Refuser". En appuyant sur le bouton "Répondre", l'appel est répondu et InCallServiceImpl
gère l'appel actif pour afficher l'UI de l'appelant et ignorer l'HUN. Cliquez sur l'icône HUN pour afficher la page "InCall" (En ligne) en plein écran avec les boutons "Répondre" et "Refuser".
-
Une notification s'affiche pour les appels manqués non lus. Cliquez sur la notification pour afficher la page "Historique des appels" et marquer les appels manqués comme lus. Appuyer sur le bouton Rappeler lance un appel et affiche l'interface utilisateur InCall du Téléphone.
-
Assistant Les utilisateurs peuvent demander à un assistant d'effectuer un appel qui peut afficher l'interface utilisateur de l'application Téléphone.
-
Google Maps Lorsque vous appelez un marchand depuis Google Maps, l'intent DIAL est envoyé avec des numéros de téléphone supplémentaires, ce qui lance la page du clavier pour un numérotation rapide.
-
CarInputService. Surveille la touche physique des boutons "Appeler" et "Raccrocher" sur le volant. Appuyez sur les boutons suivants:
-
Le bouton d'appel du volant en l'absence d'appel entrant envoie l'intent DIAL et affiche la page du clavier du numéroteur.
-
Lorsque vous appuyez sur le bouton d'appel du volant en cas d'appel entrant, TelecomManager répond à l'appel.
-
Lorsque vous appuyez sur le bouton de fin d'appel du volant en cas d'appel entrant, TelecomManager met fin à l'appel.
-
Bluetooth
-
PBAPClient. Télécharge les contacts à partir d'un téléphone et écrit dans le fournisseur de contacts. Pour chaque téléphone connecté, un compte est créé avec l'adresse MAC Bluetooth de l'appareil comme nom de compte et com.android.bluetooth.pbapsink
(@string/pbap_account_type
défini dans packages/apps/Bluetooth
) comme type de compte. Les contacts écrits au fournisseur de contacts sont écrits avec les informations du compte et sont effacés lorsque le téléphone est déconnecté. PBAPClient
n'interagit pas directement avec le Dialer, mais écrit les contacts dans le fournisseur de contacts. L'application Téléphone lit les contacts du fournisseur de contacts.
-
HfpClientConnectionService
: gère l'appel Bluetooth via le profil mains libres et signale l'appel aux services télécom.
-
Télécom. Le framework Android Telecom gère les appels audio et vidéo sur un appareil Android. Étant donné que l'application Téléphone est l'application par défaut, elle implémente les API InCallService
et InCallController
lie l'implémentation InCallService du Téléphone pour gérer les appels. Pour en savoir plus, consultez les pages Créer une application de téléphone de remplacement et Devenir l'application de téléphone par défaut.
-
Réglages système Le clavier de numérotation surveille la liste des appareils connectés en HFP et affiche un message d'erreur lorsqu'aucun téléphone n'est connecté au clavier de numérotation via Bluetooth. Dans la référence AOSP, le bouton "Se connecter au Bluetooth" redirige les utilisateurs vers la page des paramètres Bluetooth du système pour associer un nouvel appareil ou se connecter à un appareil associé.
-
Moteur de détection des distractions du conducteur Ce service système Android impose des restrictions d'expérience utilisateur en fonction de l'état de conduite de la voiture. Le Dialer doit exécuter toutes les restrictions d'UX liées aux distractions au volant.Pour ce faire, le Dialer doit écouter le CarUXRestrictionManager et implémenter toutes les règles. Le téléphone doit:
-
Connectez-vous à la bibliothèque Car et obtenez une instance de CarUXRestrictionManager.
-
Abonnez-vous aux mises à jour de la liste des CarUxRestrictions et implémentez-les comme indiqué dans la documentation.
-
Points particulièrement importants pour le clavier:
-
La page des paramètres est optimisée pour le véhicule. L'utilisateur ne pouvait pas accéder à la page des paramètres du clavier lorsqu'il conduisait. Lorsque l'utilisateur appuie sur le menu "Paramètres" dans la barre d'action, un écran de blocage s'affiche pour l'empêcher d'accéder aux paramètres pendant la conduite. Si la page "Paramètres" est déjà affichée, l'écran de blocage s'affiche pour arrêter l'interaction de l'utilisateur.
-
Vous ne pouvez pas accéder aux paramètres système en conduisant. Sur la page d'erreur, lorsqu'aucun appareil Bluetooth n'est connecté, un bouton "Se connecter au Bluetooth" affiche la page des paramètres Bluetooth du système. L'UXR de ce bouton est entièrement restreint.
Lorsque vous conduisez, cliquer sur ce bouton affiche un message d'erreur pour indiquer à l'utilisateur de garer d'abord la voiture, puis d'effectuer l'action.
-
L'utilisateur ne peut pas démarrer le parcours d'ajout aux favoris en conduisant. Le bouton "Ajouter un favori" est désactivé.
Parcours utilisateur
Dialer Main
Les différentes pages de l'application Téléphone sont indiquées ci-dessous.

Figure 2. Page principale du Téléphone
Gestion des appels
Le flux de traitement des appels est présenté ci-dessous:

Figure 3. Gestion des appels
Notifications
Les différentes pages de notifications sont affichées ci-dessous:

Figure 4. Notifications
État de l'appel
Le flux de la page InCall est présenté ci-dessous:

Figure 5. Page InCall
Recherche
Les affichages de recherche sont les suivants:

Figure 6. Recherche
Paramètres
Les options de paramètres sont les suivantes:

Figure 7. Paramètres
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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"]]