2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
기술 세부정보
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
다음 다이어그램은 다이얼러와 상호작용하는 시스템 구성요소를 보여 줍니다.

그림 1. 다이얼러와 상호작용하는 구성요소
-
시스템 UI. 전화 버튼을 호스팅하는 하위 탐색 속성이며 intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;package=com.android.car.dialer;launchFlags=0x10000000;end
인텐트를 등록합니다.
그러면 사용자의 기본 활동인 TelecomActivity
가 시작됩니다.
-
앱 런처. 전체 앱 목록을 관리합니다. 다이얼러는 android.intent.category.LAUNCHER
를 사용하여 TelecomActivity를 선언합니다. 런처의 앱 목록에서 전화 앱을 선택하면 TelecomActivity가 표시됩니다.
-
홈 위젯. AOSP 참조에는 홈 위젯이 없습니다. OEM은 다이얼러용 홈 위젯을 추가하여 현재 연결된 휴대전화의 상태 및 기타 정보를 표시할 수도 있습니다.
-
알림 센터
-
헤드업 알림(HUN)이 표시되어 수신 전화를 알립니다. 다이얼러 InCallServiceImpl
이 수신 전화를 받으면 HUN을 알림 센터에 게시하여 전화번호나 연락처 정보와 같은 통화 세부정보를 표시합니다. 다이얼러는 응답 및 거부 등의 두 작업 버튼도 표시합니다. 응답 버튼을 탭하면 통화에 응답하고 InCallServiceImpl
이 진행 중인 통화를 처리하여 통화 UI에 다이얼러를 표시하고 HUN을 닫습니다. HUN을 클릭하면 응답 버튼과 거부 버튼이 있는 전체 화면 InCall 페이지가 표시됩니다.
-
알림이 표시되어 읽지 않은 부재중 전화를 알립니다. 알림을 클릭하면 통화 기록 페이지가 표시되며 부재중 전화가 읽음으로 표시됩니다. 통화하기 버튼을 탭하면 전화를 걸고 다이얼러의 InCall 사용자 인터페이스가 표시됩니다.
-
어시스턴트. 사용자는 어시스턴트에게 전화를 걸도록 요청할 수 있으며 그러면 다이얼러 InCall 사용자 인터페이스가 표시될 수 있습니다.
-
Google 지도. Google 지도에서 판매자에게 전화를 걸면 빠른 발신을 위한 다이얼패드 페이지를 시작하는 전화번호 추가 정보가 포함된 DIAL 인텐트가 전송됩니다.
-
CarInputService. 핸들에 있는 통화 버튼 및 통화 종료 버튼의 실제 키를 모니터링합니다. 상황에 따라 다음과 같이 합니다.
-
수신 전화가 없을 때 핸들에 있는 통화 버튼을 사용하면 DIAL 인텐트가 전송되고 다이얼러의 다이얼패드 페이지가 표시됩니다.
-
수신 전화가 있을 때 핸들에 있는 통화 버튼을 사용하면 TelecomManager가 전화를 받습니다.
-
수신 전화가 있을 때 핸들에 있는 통화 종료 버튼을 사용하면 TelecomManager가 통화를 종료합니다.
-
블루투스
-
PBAPClient. 휴대전화에서 연락처를 다운로드하고 연락처 제공자에 기록합니다. 연결된 휴대전화별로 기기의 블루투스 MAC 주소를 계정 이름으로, com.android.bluetooth.pbapsink
(packages/apps/Bluetooth
에 정의된 @string/pbap_account_type
)를 계정 유형으로 사용하여 계정이 생성됩니다. 연락처 제공자에 기록된 연락처는 계정 정보와 함께 작성되며 휴대전화의 연결이 끊어지면 삭제됩니다. PBAPClient
는 다이얼러와 직접 상호작용하지 않는 대신 연락처 제공자에 연락처를 작성합니다. 다이얼러는 연락처 제공자에서 연락처를 읽습니다.
-
HfpClientConnectionService
. HFP를 통해 블루투스 통화를 관리하고 이 통화를 텔레콤 서비스에 보고합니다.
-
텔레콤. Android 텔레콤 프레임워크는 Android 기기의 음성 통화와 영상 통화를 관리합니다. 다이얼러는 기본 전화 앱이므로 InCallService
API를 구현하고, InCallController
는 다이얼러의 InCallService 구현을 바인딩하여 통화를 처리합니다. 자세한 내용은 대체 전화 앱 만들기 및 기본 전화 앱으로 설정을 참고하세요.
-
시스템 설정. 다이얼러는 HFP 연결 기기 목록을 모니터링하고 블루투스를 통해 다이얼러에 연결된 휴대전화가 없는 경우 오류 메시지를 표시합니다. AOSP 참조에서 '블루투스에 연결' 버튼은 사용자를 시스템 블루투스 설정 페이지로 연결하여 새 기기를 페어링하거나 페어링된 기기에 연결합니다.
-
운전자 주의 분산 행동 엔진. 이 Android 시스템 서비스는 차량의 주행 상태에 따라 UX 제한을 적용합니다. 다이얼러는 모든 UX 운전자 주의 분산 행동 제한을 실행해야 합니다. 이렇게 하려면 다이얼러는 CarUXRestrictionManager를 수신하고 모든 정책을 구현해야 합니다. 다이얼러는 다음 작업을 해야 합니다.
-
자동차 라이브러리에 연결하고 CarUXRestrictionManager의 인스턴스를 가져옵니다.
-
CarUxRestrictions 목록에서 업데이트를 구독하고 문서에 설명된 대로 구현합니다.
-
다이얼러에 특히 중요한 사항은 다음과 같습니다.
-
설정 페이지는 차량에 최적화되어 있습니다. 사용자는 운전 중에 다이얼러 설정 페이지에 액세스할 수 없습니다. 작업 모음에서 설정 메뉴를 탭하면 차단 화면이 표시되어 사용자가 운전 중에 설정에 액세스하지 못하게 됩니다. 설정 페이지가 이미 표시되어 있는 경우에는 차단 화면이 나타나 사용자 상호작용을 중지합니다.
-
운전 중에는 시스템 설정에 액세스할 수 없습니다. 오류 페이지에서 블루투스 기기가 연결되어 있지 않으면 '블루투스에 연결' 버튼이 시스템 블루투스 설정 페이지를 표시합니다. 이 버튼의 UXR은 완전히 제한됩니다.
운전 중에 이 버튼을 클릭하면 먼저 자동차를 주차한 후에 작업하도록 알리는 오류 메시지가 표시됩니다.
-
운전 중에는 즐겨찾기에 추가 흐름을 시작할 수 없습니다. '즐겨찾기에 추가' 버튼이 사용 중지됩니다.
사용자 흐름
다이얼러 기본
다이얼러의 다양한 페이지는 다음과 같습니다.

그림 2. 기본 다이얼러 페이지
통화 처리
통화 처리 프로세스 흐름은 다음과 같습니다.

그림 3. 통화 처리
알림
아래에 다양한 알림 페이지가 표시되어 있습니다.

그림 4. 알림
InCall 상태
InCall 페이지 흐름은 다음과 같습니다.

그림 5. InCall 페이지
검색
검색 화면은 다음과 같습니다.

그림 6. 검색
설정
설정 옵션은 다음과 같습니다.

그림 7. 설정
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 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"]]