기술적 세부 사항

다음 다이어그램은 다이얼러와 상호 작용하는 시스템 구성 요소를 보여줍니다.

다이얼러와 상호 작용하는 구성 요소

그림 1. Dialer와 상호 작용하는 구성 요소

  • 시스템 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(Heads Up Notification)이 표시됩니다. 다이얼러 InCallServiceImpl 이 수신 전화를 받으면 다이얼러는 전화 번호 또는 연락처 정보와 같은 통화 세부 정보를 보여주는 알림 센터에 HUN을 게시합니다. 다이얼러는 응답 및 거부라는 두 가지 작업 버튼도 표시합니다. 응답 버튼을 탭하면 통화가 응답되고 InCallServiceImpl 이 활성 통화를 처리하여 다이얼러의 통화 UI를 표시하고 HUN을 해제합니다. HUN을 클릭하면 응답 및 거부 버튼이 있는 전체 화면 InCall 페이지가 표시됩니다.

    • 읽지 않은 부재중 전화에 대한 알림이 나타납니다. 알림을 클릭하면 통화 기록 페이지가 표시되고 부재중 전화를 읽은 상태로 표시합니다. 콜백 버튼을 누르면 전화가 걸려오고 다이얼러의 InCall 사용자 인터페이스가 표시됩니다.

  • 어시스턴트. 사용자는 전화 걸기 InCall 사용자 인터페이스를 표시할 수 있는 전화를 걸도록 보조자에게 요청할 수 있습니다.

  • 구글지도. Google 지도에서 판매자에게 전화를 걸면 추가 전화번호와 함께 DIAL 인텐트가 전송되어 빠른 다이얼을 위한 다이얼패드 페이지가 시작됩니다.

  • 자동차 입력 서비스. 스티어링 휠에 있는 통화 및 통화 종료 버튼의 물리적 키를 모니터링합니다. 누르기:

    • 수신 전화가 없을 때 스티어링 휠의 통화 버튼은 DIAL 인텐트를 전송하고 다이얼러의 다이얼 패드 페이지를 표시합니다.

    • 걸려오는 전화가 있을 때 스티어링 휠의 통화 버튼을 누르면 TelecomManager가 전화에 응답합니다.

    • 전화가 걸려올 때 핸들에서 통화 종료 버튼을 누르면 TelecomManager가 통화를 종료합니다.

  • 블루투스

    • PBAP 클라이언트. 전화에서 연락처를 다운로드하고 연락처 제공자에게 씁니다. 연결된 각 전화기에 대해 장치의 Bluetooth MAC 주소를 계정 이름으로 사용하고 계정 유형으로 com.android.bluetooth.pbapsink ( @string/pbap_account_type 정의 packages/apps/Bluetooth )로 계정이 생성됩니다. 연락처 제공자에게 작성된 연락처는 계정 정보와 함께 작성되며 전화 연결이 끊어지면 지워집니다. PBAPClient 는 다이얼러와 직접 상호 작용하지 않지만 대신 연락처 제공자에 연락처를 씁니다. 다이얼러는 연락처 제공자로부터 연락처를 읽습니다.

    • HfpClientConnectionService . HFP를 통해 Bluetooth 통화를 관리하고 Telecom 서비스에 통화를 보고합니다.

  • 통신. Android Telecom 프레임워크는 Android 기기에서 음성 및 영상 통화를 관리합니다. Dialer는 기본 전화 앱이므로 InCallService API를 구현하고 InCallController 는 전화를 처리하기 위해 Dialer의 InCallService 구현을 바인딩합니다. 자세한 내용 은 대체 전화 앱 만들기기본 전화 앱 되기를 참조하십시오.

  • 환경 설정. 다이얼러는 HFP 연결 장치 목록을 모니터링하고 블루투스를 통해 다이얼러에 연결된 전화기가 없을 때 오류 메시지를 표시합니다. AOSP 참조에서 Bluetooth에 연결 버튼은 사용자를 시스템 Bluetooth 설정 페이지로 연결하여 새 장치를 페어링하거나 페어링된 장치에 연결하도록 합니다.

  • 운전자 주의 분산 엔진. 이 Android 시스템 서비스는 자동차의 운전 상태에 따라 UX 제한을 부과합니다. Dialer는 모든 UX 운전 주의 산만 제한을 실행해야 합니다. 이를 위해 Dialer는 CarUXRestrictionManager 를 듣고 모든 정책을 구현해야 합니다. 다이얼러는 다음을 수행해야 합니다.

    • Car 라이브러리에 연결하고 CarUXRestrictionManager 인스턴스를 가져옵니다.

    • CarUxRestrictions 목록에서 업데이트를 구독하고 문서화된 대로 구현합니다.

    • 다이얼러에게 특히 중요한 사항:

      • 설정 페이지는 차량에 최적화되어 있습니다. 사용자가 운전 중 다이얼러 설정 페이지에 액세스할 수 없습니다. 액션바에서 설정 메뉴를 탭하면 운전 중 설정에 접근할 수 없도록 차단 화면이 표시된다. 설정 페이지가 이미 표시된 경우 차단 화면이 나타나 사용자 상호 작용을 중지합니다.

      • 운전 중에는 시스템 설정에 액세스할 수 없습니다. 오류 페이지에서 Bluetooth 장치가 연결되어 있지 않으면 Bluetooth에 연결 버튼이 시스템 Bluetooth 설정 페이지를 표시합니다. 이 버튼의 UXR은 완전히 제한됩니다. 운전 중 이 버튼을 클릭하면 오류 메시지가 표시되어 사용자에게 먼저 차를 주차한 다음 작업을 수행하라는 메시지가 표시됩니다.

      • 사용자는 운전 중 즐겨찾기 추가 흐름을 시작할 수 없습니다. 즐겨찾기 추가 버튼이 비활성화되었습니다.

사용자 흐름

다이얼러 메인

Dialer에 대한 다양한 페이지가 아래에 제공됩니다.

메인 다이얼러 페이지

그림 2. 기본 다이얼러 페이지

통화 처리

통화 전달 프로세스 흐름은 다음과 같습니다.

통화 처리

그림 3. 통화 처리

알림

다양한 알림 페이지가 아래에 표시됩니다.

알림

그림 4. 알림

수신 상태

InCall 페이지 흐름은 다음과 같습니다.

인콜 페이지

그림 5. InCall 페이지

검색 표시는 다음과 같습니다.

검색

그림 6. 검색

설정

설정 옵션은 다음과 같습니다.

설정

그림 7. 설정