Android Automotive OS 개요

Android Automotive OS 사용자 인터페이스
그림 1: Android Automotive OS

Android Automotive OS는 자동차 내 사용에 최적화된 Android 버전으로, 핵심 Android 플랫폼을 확장합니다. Google 탑재 자동차는 Android Automotive OS를 실행하며 Google Play, Gemini, Google 어시스턴트, Google 지도를 비롯한 Google 앱과 서비스가 함께 제공됩니다.

Android Automotive OS 하드웨어 알아보기

Android Automotive OS 기기의 최소 하드웨어 사양에 관해 자세히 알아보려면 앱이 지원하는 Android 버전의 Android 호환성 정의 문서(CDD)자동차 요구사항 섹션을 참고하세요.

디스플레이 컷아웃

다른 Android 폼 팩터와 마찬가지로 Android Automotive OS 기기에서도 직사각형이 아닌 디스플레이를 통해 디스플레이 컷아웃이 지원됩니다. 하지만 자동차에서 발견되는 컷아웃의 크기와 모양은 다른 폼 팩터에서 발견되는 컷아웃과 매우 다를 수 있습니다. 자세한 안내는 창 인셋 및 디스플레이 컷아웃 사용을 참고하세요.

오디오

Android Automotive OS 기기는 일반적으로 고정 볼륨 기기입니다. 앱에 미치는 영향에 관해 자세히 알아보려면 고정 볼륨 기기 작업을 참고하세요.

Android Automotive OS 소프트웨어 이해하기

Android Automotive OS는 다른 폼 팩터에서 사용되는 것과 동일한 핵심 운영체제를 기반으로 하지만 앱을 개발하고 사용하는 방식에 영향을 미칠 수 있는 고유한 추가 기능이 있습니다.

시스템 UI

자동차에서 이러한 시스템 UI 요소가 작동하는 방식에는 몇 가지 차이점이 있습니다.

다른 폼 팩터와 달리 Android Automotive OS 기기에는 하드웨어 또는 소프트웨어 뒤로 어포던스가 필요하지 않습니다. 호환성 모드에서 실행되지 않는 경우 앱에서 구현한 활동에는 인앱 탐색을 사용 설정하는 UI 어포던스가 포함되어야 합니다.AN-1

시스템 표시줄 레이아웃

다른 폼 팩터와 마찬가지로 Android Automotive OS에는 시스템 표시줄 예: 상태 표시줄 및 탐색 메뉴이 포함되어 있습니다. 자동차에서 이러한 표시줄은 다른 폼 팩터와 다른 방식으로 크기와 위치를 지정할 수 있습니다. 예를 들어, 탐색 메뉴는 화면의 왼쪽, 오른쪽 또는 하단에 위치할 수 있습니다. 대부분의 휴대전화와 태블릿에서처럼 상단에 상태 표시줄이 있고 하단에 탐색 메뉴가 있는 경우라 하더라도, 자동차에서는 이러한 요소의 크기가 훨씬 클 수 있습니다.

또한 모바일 기기의 디스플레이 컷아웃은 일반적으로 시스템 표시줄의 경계 내에 포함되지만 자동차에서는 그렇지 않습니다.

자세한 안내는 창 인셋 및 디스플레이 컷아웃 사용을 참고하세요.

몰입형 모드

Android Automotive OS에서는 앱이 시스템 표시줄을 표시하거나 숨겨서 몰입형 모드로 전환하거나 몰입형 모드를 종료할 수 있는지 여부를 OEM이 제어할 수도 있습니다. 앱이 시스템 표시줄을 숨기지 못하도록 OEM이 설정하면 화면에서 항상 실내 온도 조절기와 같은 차량 컨트롤에 액세스할 수 있습니다.

사용자 환경 제한

사용자 환경 (UX) 제한은 운전자의 주의 분산 고려사항을 처리하기 위해 Android Automotive OS에 내장된 기능입니다. UX 제한은 운전 중에 사용하도록 최적화되지 않은 앱의 사용을 자동으로 방지합니다.

주의 분산 행동 최적화로 표시되지 않은 앱 위에 활동 차단 활동이 표시됩니다.
그림 2: UX 제한으로 인해 차단된 앱

UX 제한이 활성화되는 시점과 방법을 결정하는 정확한 규칙 집합은 자동차 제조업체에서 결정합니다. 이러한 규칙은 지역에 따라 다를 수 있습니다. 예를 들어 유럽에서 판매되는 동일한 차량은 미국에서 판매되는 차량과 다른 규칙을 가질 수 있습니다.

UX 제한 규칙은 차량 내 디스플레이에 따라 다를 수도 있습니다. 예를 들어 차량이 이동하는 동안 운전자의 시야에 있는 중앙 디스플레이는 제한될 수 있지만 승객 디스플레이는 제한되지 않을 수 있습니다.

앱이 UX 제한에 적응해야 하는 경우 구현을 리버스 엔지니어링하려고 하지 말고 직접 참조하세요. 예를 들어 기어가 주차 상태가 아닐 때 UX 제한이 활성화된다고 가정하면 승객 디스플레이에서 실행되는 앱을 불필요하게 제한할 수 있습니다.

주의 분산 최적화

기본적으로 UX 제한이 활성화된 동안에는 운전자의 주의 분산을 제한하기 위해 활동을 실행할 수 없습니다. 차량이 이동하는 동안 활동이 계속 실행되어야 함을 시스템에 나타내려면 다음 <meta-data> 요소를 상응하는 <activity> 요소 내에 추가하면 됩니다.

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

Android Automotive OS용 앱을 개발할 때 이 메타데이터 는 자동차 앱 라이브러리를 사용하여 빌드된 앱의 CarAppActivity매니페스트 요소를 <activity>선언할 때만 매니페스트에 있어야 합니다. 다른 활동은 주의 분산 최적화로 표시해서는 안 됩니다. 표시된 경우 Google Play 스토어에 제출할 때 앱이 거부됩니다.

접근성

Android Automotive OS의 접근성 지원은 다른 폼 팩터만큼 광범위하지 않습니다. TalkBack, 스위치 제어, 음성 액세스는 Android Automotive OS 기기에서 사용할 수 없습니다.

자막 환경설정은 Android Automotive OS 기기에서 지원됩니다. 통합에 관한 자세한 내용은 시스템 자막 설정 채택을 참고하세요.

네트워크 선택

Android Automotive OS는 OEM이 애플리케이션별로 모바일 네트워크 트래픽을 여러 네트워크로 라우팅할 수 있는 애플리케이션별 네트워크 선택 (PANS)을 지원합니다.

대부분의 앱은 할당된 기본 네트워크만 사용하며 이 기능의 이점을 누릴 수 있습니다. 예를 들어 사용자가 자체 데이터 요금제를 보유하지 않은 경우에도 OEM이 앱의 네트워크 트래픽 비용을 지불할 수 있습니다. 앱 (또는 종속 항목 중 하나)이 기본 네트워크가 아닌 네트워크를 사용하는 경우 OEM에서 설정한 환경설정의 이점을 누리지 못할 수 있습니다. 기본 네트워크가 아닌 네트워크 사용에 관한 자세한 안내는 네트워크 상태 읽기를 참고하세요.

시스템 기능

PackageManager::hasSystemFeature를 사용하여 특정 기능을 사용할 수 있는지 감지하고 이에 따라 앱의 동작을 조정할 수 있습니다.

하드웨어 기능

모바일이 아닌 다른 폼 팩터와 마찬가지로 자동차에서 사용할 수 있는 하드웨어 기능은 모바일 기기에서 발견되는 기능과 다를 수 있습니다.

화면 방향

TV와 마찬가지로 자동차는 고정 방향 기기입니다. TV와 달리 세로 모드와 가로 모드 방향으로 제공됩니다. Android Automotive OS용으로 빌드된 앱을 모든 차량에 배포할 수 있도록 하려면 앱에 android.hardware.screen.landscape 또는 android.hardware.screen.portrait 기능에 관한 명시적 또는 암시적 기능 요구사항이 없어야 합니다.

네트워크 위치

많은 Android Automotive OS 기기는 네트워크 위치를 제공하는 데 사용되는 전화 통신 스택을 구현하지 않으므로 다음 시스템 기능을 보고하지 않습니다. android.hardware.location.network 네트워크 위치를 사용하지 못할 수 있지만 대략적인 위치 액세스는 여전히 지원됩니다. Android Automotive OS의 대략적인 위치를 참고하세요.

소프트웨어 기능

다른 폼 팩터에서 일반적으로 발견되는 일부 소프트웨어 기능은 Android Automotive OS 기기에서 지원되지 않을 수 있습니다. 예를 들어 많은 Android Automotive OS 차량에서 다음 기능을 사용할 수 없습니다.

Google Play 기능 요구사항 충족

Google Play를 통해 자동차에 배포되려면 Android Automotive OS용으로 빌드된 앱의 AndroidManifest.xml 파일에 android.hardware.type.automotive 기능의 <uses-feature> 요소가 포함되어야 합니다.

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

또한 앱에 명시적 기능 선언이 포함된 android:required="true" 또는 다음 기능 중 하나에 관한 암시적 기능 요구사항이 있는 경우 앱의 기능 요구사항이 호환되는 차량에 배포되는 것을 방지하지 않도록 업데이트하거나 삭제해야 합니다.

android:required="true"로 명시적으로 선언된 기능의 경우 다음 중 하나를 실행할 수 있습니다.

  • 기능이 암시적으로 필요하지 않은 경우 <uses-feature> 요소를 삭제합니다.
  • android:required="false"로 기능을 명시적으로 선언합니다.

암시적으로 필요한 기능의 경우 다음 중 하나를 실행할 수 있습니다.

  • android:required="false"로 기능을 명시적으로 선언합니다.
  • 기능에 관한 암시적 요구사항을 도입하는 매니페스트 값을 삭제하거나 업데이트합니다.

매니페스트에서 기능 선언을 변경해도 앱의 실제 작동에는 영향을 미치지 않으므로 이러한 기능이 없어도 앱이 계속 제대로 작동하는지 확인하세요.

자주 묻는 질문(FAQ)

Google 탑재 차량은 무엇인가요?

Google 탑재 모델이 있는 OEM 목록은 Google 탑재 자동차 사이트를 참고하세요. 하드웨어 사양 및 기타 기기 세부정보는 Play Console의 기기 카탈로그를 사용하여 가져올 수 있습니다.