Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Informacje techniczne
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Poniższy diagram przedstawia elementy systemu, które współpracują z Dialerem:

Rysunek 1. Komponenty, które współpracują z Dialerem
-
Interfejs systemu. Element nawigacji w dolnej części strony, który zawiera przycisk telefonu rejestrujący intencję intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end
.
Spowoduje to uruchomienie głównej aktywności użytkownika, czyli TelecomActivity
.
-
Menu z aplikacjami zarządza całą listą aplikacji. Dialer deklaruje TelecomActivity za pomocą android.intent.category.LAUNCHER
. Wybranie aplikacji telefonicznej z listy aplikacji w wyszukiwarce powoduje wyświetlenie TelecomActivity.
-
Widżet na ekranie głównym W dokumentacji AOSP nie ma widżetu Home. Producenci OEM mogą rozważyć dodanie widżetu Główne okno w aplikacji Dialer, aby wyświetlać stan bieżącego połączonego telefonu (a także inne informacje).
-
Centrum powiadomień
-
Powiadomienie o zbliżającym się połączeniu wyświetla się w przypadku połączeń przychodzących. Gdy Dialer
InCallServiceImpl
otrzyma połączenie przychodzące, umieści w Centrum powiadomień wiadomość z uprawnieniami, która zawiera szczegóły połączenia, takie jak numer telefonu lub informacje o kontaktach.
Dialer wyświetla też 2 przyciski czynności: Odbierz i Odłóż. Po kliknięciu przycisku Odbierz połączenie połączenie zostanie odebrane, a InCallServiceImpl
obsłuży aktywne połączenie, aby wyświetlić interfejs Dialer w interfejsie połączenia i zamknąć HUN. Kliknięcie HUN powoduje wyświetlenie pełnej strony Rozmowa z przyciskami Odbierz i Odrzuć.
-
Powiadomienie o nieodebranych połączeniach Kliknięcie powiadomienia powoduje wyświetlenie strony Historia połączeń i oznaczenie nieodebranych połączeń jako przeczytanych. Kliknięcie przycisku Zadzwoń ponownie powoduje nawiązanie połączenia i wyświetlenie interfejsu InCall.
-
Asystent. Użytkownicy mogą poprosić asystenta o nawiązanie połączenia, które może wyświetlić interfejs Dialer InCall.
-
Mapy Google. Wybieranie numeru w Mapach Google powoduje wysłanie intencji DIAL z dodatkowymi numerami telefonów, które uruchamiają stronę Dialpad do szybkiego wybierania.
-
CarInputService. Monitoruje przycisk wywoływania połączeń i przycisk zamykania połączeń na kierownicy. Naciśnięcie:
-
Przycisk połączenia na kierownicy, gdy nie ma połączenia przychodzącego, wysyła intencję DIAL i wyświetla stronę Dialpad w aplikacji Dialer.
-
Przycisk wywołania na kierownicy, gdy jest połączenie przychodzące, powoduje, że TelecomManager odbiera połączenie.
-
Przycisk Zakończ połączenie na kierownicy, gdy przychodzi połączenie, TelecomManager kończy połączenie.
-
Bluetooth
-
PBAPClient. Pobiera kontakty z telefonu i zapisują je w usługodawcy kontaktów. Dla każdego połączonego telefonu tworzone jest konto z adresem MAC Bluetooth jako nazwą konta i wartością com.android.bluetooth.pbapsink
(@string/pbap_account_type
zdefiniowaną w packages/apps/Bluetooth
) jako typem konta. Kontakty zapisywane przez dostawcę kontaktów są zapisywane z informacjami o koncie i usuwane po odłączeniu telefonu. PBAPClient
nie wchodzi w bezpośrednią interakcję z Dialerem, ale zamiast tego zapisuje kontakty w usłudze Kontakty. Dialer: odczytuje kontakty z usługodawcy kontaktów.
-
HfpClientConnectionService
. Zarządza połączeniem Bluetooth za pomocą HFP i zgłasza je do usług telekomunikacyjnych.
-
Telekomunikacja. Platforma Android Telecom zarządza połączeniami audio i wideo na urządzeniu z Androidem. Aplikacja Dialer jest domyślną aplikacją telefoniczną, więc implementuje interfejsy API InCallService
. InCallController
łączy implementację usługi InCallService aplikacji Dialer z obsługą połączeń. Więcej informacji znajdziesz w artykułach Tworzenie zamiennika domyślnej aplikacji do telefonowania i Zostawanie domyślną aplikacją do telefonowania.
-
Ustawienia systemu. Dialer sprawdza listę urządzeń połączonych przez HFP i wyświetla komunikat o błędzie, gdy żaden telefon nie jest połączony z dialerem przez Bluetooth. W ramach AOSP przycisk Połącz z Bluetoothem przekierowuje użytkowników na stronę ustawień Bluetooth, na której mogą sparować nowe urządzenie lub połączyć się ze sparowanym urządzeniem.
-
Silnik dotyczący rozpraszania uwagi kierowcy Ta usługa systemu Android nakłada ograniczenia dotyczące UX na podstawie stanu jazdy samochodem. Dialer musi stosować wszystkie ograniczenia dotyczące UX, które mogą powodować rozproszenie uwagi.Aby to zrobić, Dialer musi słuchać CarUXRestrictionManager i wdrażać wszystkie zasady. Dialer musi:
-
Połącz się z biblioteką Car i uzyskaj instancję CarUXRestrictionManager.
-
Subskrybuj aktualizacje na liście CarUxRestrictions i wdróż je zgodnie z dokumentacją.
-
W przypadku Dialer szczególnie ważne są:
-
Strona Ustawienia jest dostosowana do pojazdu. Użytkownik nie może uzyskać dostępu do strony ustawień Dialer podczas jazdy. Po kliknięciu menu Ustawienia na pasku czynności wyświetla się ekran blokady, który uniemożliwia użytkownikowi dostęp do ustawień podczas jazdy. Jeśli strona Ustawienia jest już wyświetlana, pojawi się ekran blokujący, aby zatrzymać interakcję użytkownika.
-
Podczas jazdy nie można otworzyć ustawień systemu. Na stronie błędów, gdy żadne urządzenia Bluetooth nie są połączone, przycisk Połącz z Bluetoothem wyświetla stronę ustawień Bluetooth systemu. Użyteczność tego przycisku jest całkowicie ograniczona.
Gdy użytkownik kliknie ten przycisk podczas jazdy, wyświetli się komunikat o błędzie, informujący go, że musi najpierw zaparkować samochód, a potem wykonać tę czynność.
-
Użytkownik nie może rozpocząć procesu dodawania do ulubionych podczas jazdy. Przycisk Dodaj do ulubionych jest wyłączony.
Wzorce przeglądania
Dialer Main
Poniżej znajdziesz różne strony aplikacji Dialer.

Rysunek 2. Główna strona Dialera
Obsługa połączeń
Poniżej przedstawiamy proces przekazywania połączeń:

Rysunek 3. Obsługa połączeń
Powiadomienia
Poniżej wyświetlają się różne strony powiadomień:

Rysunek 4. Powiadomienia
Stan połączenia
Poniżej przedstawiono przepływ na stronie Rozmowa:

Rysunek 5. Strona podczas połączenia
Szukaj
Wyświetlane informacje:

Rysunek 6. Szukaj
Ustawienia
Opcje ustawień:

Rysunek 7. Ustawienia
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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"]]