다음 다이어그램은 다이얼러와 상호작용하는 시스템 구성요소를 보여 줍니다.
그림 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를 수신하고 모든 정책을 구현해야 합니다. 다이얼러는 다음 작업을 해야 합니다.
-
Car 라이브러리에 연결하고 CarUXRestrictionManager의 인스턴스를 가져옵니다.
-
CarUxRestrictions 목록에서 업데이트를 구독하고 문서에 설명된 대로 구현합니다.
-
다이얼러에 특히 중요한 사항은 다음과 같습니다.
-
설정 페이지는 차량에 최적화되어 있습니다. 사용자는 운전 중에 다이얼러 설정 페이지에 액세스할 수 없습니다. 작업 모음에서 설정 메뉴를 탭하면 차단 화면이 표시되어 사용자가 운전 중에 설정에 액세스하지 못하게 됩니다. 설정 페이지가 이미 표시되어 있는 경우에는 차단 화면이 나타나 사용자 상호작용을 중지합니다.
-
운전 중에는 시스템 설정에 액세스할 수 없습니다. 오류 페이지에서 블루투스 기기가 연결되어 있지 않으면 '블루투스에 연결' 버튼이 시스템 블루투스 설정 페이지를 표시합니다. 이 버튼의 UXR은 완전히 제한됩니다. 운전 중에 이 버튼을 클릭하면 먼저 자동차를 주차한 후에 작업하도록 알리는 오류 메시지가 표시됩니다.
-
운전 중에는 즐겨찾기에 추가 흐름을 시작할 수 없습니다. '즐겨찾기에 추가' 버튼이 사용하지 않도록 설정됩니다.
-
-
사용자 흐름
다이얼러 기본
다이얼러의 다양한 페이지는 다음과 같습니다.
그림 2. 기본 다이얼러 페이지
통화 처리
통화 처리 프로세스 흐름은 다음과 같습니다.
그림 3. 통화 처리
알림
아래에 다양한 알림 페이지가 표시되어 있습니다.
그림 4. 알림
InCall 상태
InCall 페이지 흐름은 다음과 같습니다.
그림 5. InCall 페이지
검색
검색 화면은 다음과 같습니다.
그림 6. 검색
설정
설정 옵션은 다음과 같습니다.
그림 7. 설정