다음 다이어그램은 다이얼러와 상호작용하는 시스템 구성요소를 보여줍니다.
그림 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(헤드업 알림)은 수신 전화에 대해 표시됩니다. Dialer
InCallServiceImpl
수신 전화를 받으면 Dialer는 전화 번호나 연락처 정보와 같은 통화 세부 정보를 표시하는 알림 센터에 HUN을 게시합니다. 다이얼러에는 응답 및 거부라는 두 가지 작업 버튼도 표시됩니다. 응답 버튼을 누르면 통화에 응답되고InCallServiceImpl
활성 통화를 처리하여 통화 UI에 다이얼러를 표시하고 HUN을 닫습니다. HUN을 클릭하면 응답 및 거부 버튼이 있는 전체 화면 InCall 페이지가 표시됩니다.읽지 않은 부재중 전화에 대한 알림이 표시됩니다. 알림을 클릭하면 통화 기록 페이지가 표시되고 부재중 전화를 읽음으로 표시합니다. 콜백 버튼을 누르면 전화가 걸리고 다이얼러의 InCall 사용자 인터페이스가 표시됩니다.
어시스턴트. 사용자는 보조자에게 Dialer InCall 사용자 인터페이스를 표시할 수 있는 전화를 걸도록 요청할 수 있습니다.
구글지도. Google 지도에서 판매자에게 전화를 걸면 빠른 전화 걸기를 위한 다이얼패드 페이지가 시작되는 추가 전화번호와 함께 DIAL 인텐트가 전송됩니다.
CarInputService. 스티어링 휠에 있는 통화 및 통화 종료 버튼의 물리적 키를 모니터링합니다. 다음을 누르세요:
전화가 수신되지 않을 때 스티어링 휠의 통화 버튼을 누르면 DIAL 인텐트가 전송되고 Dialer의 Dialpad 페이지가 표시됩니다.
전화 수신 시 스티어링 휠의 통화 버튼을 누르면 TelecomManager가 전화에 응답합니다.
전화 수신 시 스티어링 휠의 통화 종료 버튼을 누르면 TelecomManager가 통화를 종료합니다.
블루투스
PBAP클라이언트. 휴대폰에서 연락처를 다운로드하고 연락처 제공자에 씁니다. 연결된 각 휴대폰에 대해 장치의 Bluetooth MAC 주소를 계정 이름으로,
com.android.bluetooth.pbapsink
(packages/apps/Bluetooth
에 정의된@string/pbap_account_type
)를 계정 유형으로 사용하여 계정이 생성됩니다. 연락처 제공자에게 작성된 연락처는 계정 정보와 함께 기록되며, 휴대폰 연결이 끊어지면 지워집니다.PBAPClient
다이얼러와 직접 상호 작용하지 않지만 대신 연락처 제공자에 연락처를 씁니다. 다이얼러는 연락처 제공자로부터 연락처를 읽습니다.HfpClientConnectionService
. HFP를 통해 블루투스 통화를 관리하고 통신 서비스에 통화를 보고합니다.
통신. Android Telecom 프레임워크는 Android 기기에서 음성 및 영상 통화를 관리합니다. Dialer는 기본 전화 앱이므로
InCallService
API를 구현하고InCallController
Dialer의 InCallService 구현을 바인딩하여 통화를 처리합니다. 자세한 내용은 대체 전화 앱 만들기 및 기본 전화 앱 되기 를 참조하세요.환경 설정. 다이얼러는 HFP에 연결된 장치 목록을 모니터링하고 블루투스를 통해 다이얼러에 연결된 휴대폰이 없는 경우 오류 메시지를 표시합니다. AOSP 참조에서 Bluetooth에 연결 버튼은 사용자를 시스템 Bluetooth 설정 페이지로 연결하여 새 장치를 페어링하거나 페어링된 장치에 연결합니다.
운전자 주의 분산 엔진. 이 Android 시스템 서비스는 자동차의 주행 상태에 따라 UX 제한을 적용합니다. 다이얼러는 모든 UX 운전 방해 제한을 실행해야 합니다. 그렇게 하려면 다이얼러는 CarUXRestrictionManager를 수신하고 모든 정책을 구현해야 합니다. 다이얼러는 다음을 수행해야 합니다.
Car 라이브러리에 연결하고 CarUXRestrictionManager 인스턴스를 얻습니다.
CarUxRestrictions 목록의 업데이트를 구독하고 문서화된 대로 구현하세요.
다이얼러에서 특히 중요한 점은 다음과 같습니다.
설정 페이지는 차량에 최적화되어 있습니다. 사용자가 운전 중에 다이얼러 설정 페이지에 액세스할 수 없습니다. 액션바에서 설정 메뉴를 탭하면 차단 화면이 표시되어 운전 중 사용자가 설정에 접근하는 것을 방지합니다. 설정 페이지가 이미 표시된 경우 차단 화면이 팝업되어 사용자 상호 작용을 중지합니다.
운전 중에는 시스템 설정에 접근할 수 없습니다. 오류 페이지에서 Bluetooth 장치가 연결되지 않은 경우 Bluetooth에 연결 버튼을 누르면 시스템 Bluetooth 설정 페이지가 표시됩니다. 이 버튼의 UXR은 완전히 제한되어 있습니다. 운전 중 이 버튼을 클릭하면 오류 메시지가 표시되어 먼저 주차한 후 조치를 취하라는 내용을 알려줍니다.
사용자는 운전 중에는 즐겨찾기 추가 흐름을 시작할 수 없습니다. 즐겨찾기 추가 버튼이 비활성화됩니다.
사용자 흐름
다이얼러 메인
다이얼러에 대한 다양한 페이지는 아래에 제공됩니다.
그림 2. 기본 다이얼러 페이지
통화 처리
통화 처리 프로세스 흐름은 다음과 같습니다.
그림 3. 통화 처리
알림
다양한 알림 페이지가 아래에 표시됩니다.
그림 4. 알림
InCall 상태
InCall 페이지 흐름은 다음과 같습니다.
그림 5. InCall 페이지
찾다
검색 디스플레이는 다음과 같습니다:
그림 6. 검색
설정
설정 옵션은 다음과 같습니다.
그림 7. 설정