Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

HMI 개요

Android Automotive 는 AOSP(Android Open Source Project)와 함께 제공되는 차량용 인포테인먼트 플랫폼 솔루션입니다. 이 주제의 기사에서는 OEM, 타사 개발자 및 최종 사용자를 위한 효과적인 HMI(Human Machine Interface) 시스템을 구축하는 데 필요한 Android Automotive System UI 및 핵심 앱에서 제공하는 주요 개념과 구성 요소를 소개합니다.

  • AOSP 호스트 통합 가이드 . 앱 호스트를 사용하면 3P 자동차 앱이 대신 OEM 스타일의 UI(사용자 인터페이스) 구성 요소를 렌더링할 수 있습니다.
  • 자동차 설정 구조 . 자동차 설정은 자동차 중심의 시각적 사용자 인터페이스, 기본 운전자 주의 분산 최적화 및 OEM을 위한 추가 사용자 지정 진입점을 제공합니다.
  • 자동차 UI 라이브러리 통합 가이드 . 자동차 UI 라이브러리는 자동차에 있는 모든 앱이 일관성과 사용자 정의를 달성할 수 있도록 하는 UI 개발 프레임워크를 제공합니다.
  • 상태 표시줄 시스템 아이콘을 사용자 정의 합니다. 상태 표시줄은 중요한 정보를 사용자에게 지속적으로 표시하는 데 사용되는 Android 시스템 UI의 구성 요소입니다. 상태 표시줄 시스템 아이콘을 사용자 지정하는 방법을 알아봅니다.
  • 주의 알림 . 헤드업 알림을 사용자 지정하는 방법에 대해 알아보세요.
  • 다이얼러 . 이 Android 시스템 앱을 사용하여 Bluetooth 통화, 연락처 검색 및 통화 관리를 위한 방해 최적화(DO) 환경을 구현하십시오.
  • 미디어 . 몇 가지 설정과 서비스로 개발자는 기존 미디어 앱을 확장할 수 있습니다. 앱은 Automotive Media 템플릿을 준수해야 하지만 개발자는 템플릿 색상, 글꼴, 아이콘 등을 사용자 지정하여 브랜드 경험을 만들 수 있습니다.
  • 알림 . 알림의 모양과 구성을 변경하는 방법을 알아보세요.

술어

다음 용어는 HMI 및 관련 문서에서 사용됩니다.

용어 정의
핵심 앱 설정, 라디오, HVAC, 미디어, 다이얼러 및 키보드를 포함하여 시스템 기능에 중요한 응용 프로그램의 키 집합입니다.
호환성 정의 문서(CDD) 장치가 최신 버전의 Android와 호환되기 위해 충족되어야 하는 요구 사항을 열거합니다.
CTS(호환성 테스트 모음) Compatibility Test Suite Downloads 에서 다운로드할 수 있는 상용 등급의 ​​무료 테스트 제품군입니다.
커스터마이징 OEM의 요구 사항을 충족하도록 AOSP 구현을 수정하는 작업입니다. 일반적으로 여기에는 리소스 오버레이를 사용하여 외관 변경 사항을 적용하는 동시에 CDD, CTS 및 모든 관련 사용자 경험 지침을 준수하는 것이 포함됩니다.
영웅 앱 기능, 업그레이드 가능성, 타사 개발자 생태계 및 최종 사용자를 포함하여 Android의 모든 측면에 중요한 핵심 앱 세트입니다. Hero 앱에는 알림, 설정, 미디어 및 커뮤니케이션 센터/다이얼이 포함됩니다. 해당 AOSP 구현은 프로덕션 품질이어야 합니다.
리소스 오버레이 사용자 인터페이스의 렌더링에 영향을 미치려면 이 메커니즘을 사용하여 색상을 교체하고, 치수를 변경하고, 그리기를 활성화하고, 컴파일 타임 (가장 일반적) 또는 런타임(RRO(런타임 리소스 오버레이))에 레이아웃 리소스를 적용합니다.
시스템 UI 탐색 표시줄, 상태 표시줄, 잠금 화면 및 볼륨 대화 상자와 같이 시스템에 속한 응용 프로그램 외부의 사용자 인터페이스입니다.
주제 테마를 상속하는 구성 요소 및 앱의 모양과 느낌을 결정하는 데 사용되는 색상 및 스타일 모음입니다.
사용자 경험(UX) 사용자 인터페이스(UI) 디자인 및 사용성 분야.

커스터마이징

시스템 UI 및 기타 핵심 시스템 애플리케이션의 AOSP 구현은 HMI 개발 프로세스를 시작하기 위한 강력한 기반 역할을 합니다. OEM의 브랜딩, 비즈니스 및 법적 요구 사항을 충족하기 위해 AOSP 구현을 수정하는 작업(주로 리소스 오버레이 사용을 통해)을 사용자 지정 이라고 합니다.

전체 시스템은 유연하게 설계 및 구축되었지만 다양한 구성 요소는 다음과 같이 다양한 수준으로 맞춤화될 것으로 예상됩니다.

  • 시스템 UI. OEM은 CDD, CTS 및 기타 적용 가능한 UX 지침이 제공하는 범위 내에서 AOSP 구현을 사용자 지정하거나 교체할 수 있습니다.

  • 비영웅 시스템 앱( 참조 라고도 함) . OEM은 AOSP 구현을 맞춤설정하거나 교체할 수 있습니다.

  • 영웅 앱 . 각 앱에는 상세한 사용자 정의 지침 세트가 함께 제공됩니다. OEM은 AOSP 구현을 사용한 다음 해당 지침에서 제공하는 범위 내에서 사용자 지정하는 것이 좋습니다.

밀도 구성

UI 요소가 물리적 디스플레이 구성에서 올바르게 렌더링되도록 하려면 밀도 속성을 빌드 파일의 다음 항목과 같이 물리적 밀도와 가장 근접하게 일치하는 버킷( 디스플레이 메트릭 )으로 설정해야 합니다.

PRODUCT_PROPERTY_OVERRIDES := \
        ro.sf.lcd_density=160

UX 제한 엔진

CarUxRestrictionsManager 는 애플리케이션이 사용자 경험을 적절하게 수정하기 위해 운전 상태와 관련된 변경 사항을 수신할 수 있는 후크를 제공합니다. OEM은 packages/services/Car/service/res/xml/car_ux_restrictions_map.xml 의 구성 파일을 오버레이하여 시스템 동작에 영향을 줄 수 있습니다.

시스템 테마

색상 및 텍스트 스타일과 같은 시스템 전체 기본 항목 집합을 규정하는 테마는 DeviceDefault 입니다. OEM은 DeviceDefault 테마를 수정하여 전체 사용자 지정 프로세스를 시작하는 것이 좋습니다. 기본적으로 시스템 UI 및 AOSP의 모든 시스템 앱은 이 테마를 상속합니다. OEM 개발 시스템 앱도 DeviceDefault를 상속하는 것이 좋습니다. 타사 개발 앱은 DeviceDefault를 상속하지 않고 대신 androidx.car 라이브러리에서 제공되는 Theme.Car 를 사용해야 합니다. 파일 위치는 다음과 같습니다.

  • 코어 . /frameworks/base/core/res/res/values/themes_device_defaults.xml
  • 색상 . /frameworks/base/core/res/res/values/colors_car.xml
  • 스타일 . /frameworks/base/core/res/res/values/styles_car.xml
  • 자동차 오버레이.
    /packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml

OEM은 car_product 오버레이를 추가로 확장하는 공급업체 디렉토리의 car_product 디렉토리에 대한 병렬 오버레이 구조를 가질 것으로 예상됩니다.

테마 놀이터 앱

이 앱은 모든 테마 속성을 한 곳에서 시각화하여 DeviceDefault 테마를 사용자 지정하는 프로세스를 간소화합니다. 또한 다른 시스템 앱과 비교하여 이 앱에서 특정 스타일이 렌더링되는 방식을 비교하여 개발자는 테마 문제를 빠르게 디버그할 수 있습니다. 이 앱은 다음에서 사용할 수 있습니다.

  /packages/services/Car/tests/ThemePlayground

시스템 UI

시스템 UI에는 /frameworks/base 아래의 모든 UI가 포함되며 주로 /frameworks/base/packages/CarSystemUI 에 있습니다. 여기에는 탐색 표시줄, 상태 표시줄, 잠금 화면, 볼륨 대화 상자, 알림, 사용자 선택기 및 권한 대화 상자가 포함됩니다. OEM은 리소스 오버레이 및 테마를 통해 시스템 UI 구성 요소를 광범위하게 사용자 지정할 수 있습니다. 단, 각각이 CDD, CTS 및 기타 적용 가능한 UX 지침의 요구 사항 내에 있어야 합니다.

시스템 애플리케이션

Android Automotive에는 전체 시스템 기능에 중요한 핵심 시스템 애플리케이션 세트가 포함되어 있습니다. 이 중 커뮤니케이션 센터, 미디어, 알림 및 설정은 영웅 응용 프로그램으로 간주됩니다.

  • 커뮤니케이션 센터
  • 공조
  • IME(키보드)
  • 런처(홈 화면)
  • 로컬 미디어 플레이어
  • 미디어
  • 전령
  • 알림
  • 라디오
  • 설정

홈 화면

Car Launcher 로 알려진 홈 화면은 HMI 경험을 위한 랜딩 페이지입니다. AOSP 구현은 참조용으로만 사용되며 OEM은 필요에 따라 탐색, 미디어 재생, 통신 및 기타 시스템 상태를 결합하는 자체 구현으로 교체해야 합니다. 종종 Car Launcher 앱은 시스템에서 사용할 수 있는 응용 프로그램을 표시합니다. 최근, 패키지 변경, 헤드리스 (런처 활동 없음) 앱과 같은 이벤트를 처리하는 방법을 알아보려면 참조 구현을 참조하세요.

알림

알림은 Android OS의 필수 구성 요소이며 동일한 구성(heads-up 알림, 알림 목록/센터, 알림 API, 순위 및 인라인 작업 포함)이 Android Automotive에 포함되었습니다. 자세한 내용은 휴대용 알림 개요 를 참조하십시오. 자동차 사용 사례를 최적화하기 위해 다음과 같이 수정했습니다(휴대용 알림 스택과 비교).

  • 사용자에게 표시되는 전체 알림 콘텐츠가 감소합니다. 알림 목록/센터에서 시스템 앱의 진행 중인 미디어 재생, 진행 중인 탐색 및 "중요하지 않은"(낮음 이하의 중요성) 포그라운드 서비스 알림을 제거합니다. 이러한 알림이 중복되거나(예: 미디어 상태를 보여주는 클러스터) ) 또는 유용하지 않습니다.

  • 복잡한 상황별 컨트롤(예: 길게 누르기 및 스와이프 길이 기반 컨트롤) 제거.

  • UX 제한 엔진 구성을 존중합니다.

    • 메시지 알림 콘텐츠 미리보기는 드라이브 상태에 따라 숨겨질 수 있습니다.
    • 모든 문자열은 최대 길이로 제한됩니다.
  • android.uid.system 으로 실행되는 번들 시스템 앱에서만 사용할 수 있는 Android 9의 자동차용 새 알림 카테고리 추가

  • CATEGORY_CAR_EMERGENCY . 알림 목록 상단에 랭크되었습니다. 방해사절(DND) 제어를 우회합니다.

  • CATEGORY_CAR_WARNING . 긴급 상황보다 낮고 다른 사람보다 위에 순위가 지정됩니다(DND 무시).
  • CATEGORY_CAR_INFORMATION . "중요도" 및 최근성을 기준으로 나머지 알림과 함께 순위가 매겨집니다.

알림 API에서 UI에 이르기까지 알림 스택의 종단 간 구현은 영웅 앱으로 간주됩니다. 모든 HU에서 일관된 API 상호 운용성을 보장하고 업그레이드 가능성을 최대화하기 위해 OEM은 AOSP 구현을 채택한 다음 가볍게 사용자 지정하는 것이 좋습니다.

커스터마이징

표준 DeviceDefault 테마 및 리소스 오버레이가 적용됩니다. 매우 제한된 수의 행동 사용자 정의 노브를 사용할 수 있습니다.

packages/apps/Car/Notification/res/values/config.xml

설정

설정 애플리케이션( 자동차 설정 )은 사용자가 Android OS 및 자동차의 나머지 부분을 구성하는 데 사용할 수 있는 손잡이를 노출하는 영웅 앱 중 하나입니다. 설정 애플리케이션은 각 주요 Android 릴리스와 밀접하게 연결된 OS의 200개 이상의 기능을 노출합니다. 업그레이드 가능성을 활성화하고 단편화를 방지하기 위해 OEM은 AOSP 구현을 선택한 다음 구현을 분기하는 대신 사용자 지정하는 것이 좋습니다.

커스터마이징

설정 애플리케이션은 사용자 정의를 고려하고 사용자 정의를 위한 여러 방법을 제공합니다.

  • 테마. 다음을 포함하여 각 기본 설정 개체 유형이 렌더링되는 방식을 시각적으로 사용자 지정할 수 있습니다.

    • Preference.DeviceDefault.CheckBoxPreference

    • Preference.DeviceDefault.DialogPreference.EditTextPreference

  • 계층 사용자 정의. 활성화하려면:

    • 임의의 루트 조각으로 시작하고 Settings/res/values/config.xml 이라는 파일에서 config_settings_hierarchy_root_fragment 값을 오버레이합니다.

    • 순서, 그룹화, 텍스트 및 아이콘과 같은 항목의 사용자 정의, 오버레이 Settings/res/xml/*.xml

  • 정적 주입. 오버레이 프로젝트를 설정하는 동안 OEM은 추가 Fragment 및 Controller 클래스를 정의한 다음 계층 구조에 추가하여 독점 화면을 추가할 수 있습니다.

  • 동적 주입 . 별도의 애플리케이션( apk )이 기본 설정 앱과 연결되어야 하는 설정 화면을 호스팅하는 경우 별도의 애플리케이션을 동적으로 주입할 수 있습니다. 자세한 내용은 동적 기본 설정 을 참조하십시오.

미디어

Media는 MediaSessionMediaBrowser API를 구현하는 미디어 응용 프로그램을 대신하여 프런트 엔드 사용자 경험을 제공하는 영웅 앱입니다. 미디어 응용 프로그램은 타사 앱(예: Spotify 및 Pandora)과 Bluetooth(BT) 스트리밍 및 로컬 미디어와 같은 기타 미디어 소스가 될 수 있습니다.

Android Auto( Projection )에서 수백 개의 미디어 앱을 사용할 수 있으며, 모두 Auto용 오디오 재생 제공 에 설명된 대로 이러한 미디어 API를 구현합니다. 미디어 API는 각 주요 Android 릴리스 및 Androidx 라이브러리 릴리스와 함께 발전합니다. 모든 미디어 앱과 Android의 향후 버전에서 API 상호 운용성을 보장하기 위해 OEM은 AOSP 구현을 채택한 다음 사용자 지정하는 것이 좋습니다.

커스터마이징

DeviceDefault 테마를 통한 표준 테마는 미디어에도 적용됩니다. 또한 사용자 지정이 UX 지침의 범위 내에 있는 경우 리소스 오버레이를 사용하여 모양과 느낌을 추가로 사용자 지정할 수 있습니다.

기타 미디어 앱

USB 미디어 및 미디어 소스

가능한 한 이러한 미디어 소스를 MediaSessionMediaBrowser API의 구현을 통해 미디어에 연결하는 것이 좋습니다(모든 타사 미디어 앱에 해당). AOSP에서 LocalMediaPlayer 앱을 참조하십시오. 이 앱은 로컬 미디어 파일을 표시하고 미디어에 소스로 표시됩니다.