자동차용 Android 앱 테스트

자동차 앱을 테스트하면 사용자에게 예상치 못한 결과가 발생하거나 사용자 환경이 저하되는 것을 막을 수 있습니다. 앱을 테스트하는 방법은 앱이 Android Auto에서 실행되는지 Android Automotive OS에서 실행되는지에 따라 다릅니다.

시작하려면 다음 섹션 중 하나를 참고하세요.

Android Auto용 앱 테스트

데스크톱 헤드 단위(DHU)를 사용하면 개발 머신에서 Android Auto 헤드 단위를 에뮬레이션할 수 있으므로 Android Auto 앱을 실행하고 테스트할 수 있습니다. DHU는 Windows, macOS, Linux 시스템에서 실행됩니다.

이 섹션에서는 개발 머신에서 DHU를 설치하고 실행하여 앱을 테스트하는 방법에 관해 설명합니다. DHU를 설치한 후 DHU 실행에서 설명하는 지원되는 연결 방법 중 하나를 통해 휴대기기를 DHU에 연결하여 Android Auto 앱을 테스트할 수 있습니다.

DHU 관련 버그를 신고하거나 기능을 요청하려면 이 Issue Tracker를 사용하세요.

DHU 설치

다음 단계에 따라 개발 머신에 DHU를 설치하세요.

  1. 온디바이스 개발자 옵션 구성에 설명된 대로 Android 6.0(API 수준 23) 이상을 실행하는 휴대기기에서 개발자 모드를 사용 설정합니다.
  2. 기기에서 앱을 컴파일하고 설치합니다.
  3. 기기에 Android Auto를 설치합니다. Android Auto가 이미 설치되어 있으면 최신 버전을 사용 중인지 확인합니다.
  4. SDK Manager를 열고 SDK Tools 탭으로 이동한 다음 Android Auto Desktop Head Unit Emulator 패키지를 다운로드합니다.

    DHU 2.0을 보여 주는 SDK Manager

    DHU는 SDK_LOCATION/extras/google/auto/ 디렉터리에 설치됩니다.

  5. Linux 또는 macOS 시스템의 이 디렉터리에서 다음 명령어를 실행하여 DHU 바이너리가 실행 가능한지 확인합니다.

    chmod +x ./desktop-head-unit
    
Linux 전용 추가 단계

Linux 시스템에서 버전 2.0을 실행하는 경우 추가 라이브러리를 설치해야 합니다. DHU 바이너리는 GLIBC 버전 2.32 이상에 종속됩니다. 다음 명령어를 실행하여 시스템의 GLIBC 버전을 확인할 수 있습니다.

ldd --version

버전이 2.32보다 낮으면 GLIBC를 2.32 이상으로 업데이트하거나 OS를 GLIBC 2.32 이상과 호환되는 버전으로 업그레이드해야 합니다.

libc++1libc++abi1 라이브러리도 설치해야 합니다. 설치 절차는 Linux 배포판에 따라 다릅니다. 예를 들어 Debian 계열 Linux 배포판에서는 다음 명령어를 사용하여 라이브러리를 설치할 수 있습니다.

sudo apt-get install libc++1 libc++abi1

DHU의 출시 전 버전 설치

DHU의 출시 전 버전에 액세스하려면 Android 스튜디오의 미리보기 버전을 사용하거나 베타 채널에 대한 기존 Android 스튜디오 설치의 업데이트 채널을 변경하면 됩니다.

DHU 실행

DHU를 설치한 후 USB로 휴대기기와 워크스테이션을 연결하여 Android Auto 앱을 테스트할 수 있습니다. 액세서리 모드(DHU 2.0에 권장) 또는 ADB 터널링을 통해 휴대기기를 개발 머신에 연결하여 DHU를 실행합니다.

액세서리 모드를 사용하여 연결(DHU 2.0만 해당)

Android Auto는 다음 명령어를 사용하여 Android Open Accessory(AOA) 프로토콜로 DHU에 연결하는 것을 지원합니다.

./desktop-head-unit --usb

기본적으로 DHU는 사용 가능한 USB 기기 목록을 검색하여 첫 번째 호환되는 기기에 연결하려고 시도합니다. 특정 기기를 타겟팅하려면 다음과 같이 --usb 명령어의 일부로 기기 ID를 포함합니다.

./desktop-head-unit --usb=[DEVICE_ID]

ADB 터널링을 사용하여 연결

이 방법을 사용하려면 Android 디버그 브리지(ADB)를 통해 Android Auto 헤드 단위 서버에 연결해야 합니다. 다음 단계를 따라 터널링을 설정하고 DHU를 실행합니다.

  1. 기기에서 실행되는 Android 버전에 따라 다음 중 하나를 실행하여 Android Auto 설정을 엽니다.

    • Android 10 이상: 기기에서 설정 > 앱 및 알림 > 앱 모두 보기 > Android Auto > 고급 > 앱 내 추가 설정을 탭합니다.
    • Android 9 이하: Android Auto 앱에서 메뉴, 설정을 차례로 탭합니다.
  2. 아래쪽에 있는 정보 섹션이 나올 때까지 스크롤한 다음 버전을 탭하여 버전 및 권한에 관한 모든 정보를 표시합니다.

  3. 버전 및 권한 정보 섹션을 10번 탭합니다.

    그러면 개발자 설정을 허용하시겠습니까? 대화상자가 표시됩니다.

  4. 확인을 탭합니다.

    이제 개발자 모드가 사용 설정되었으므로 더보기 메뉴에서 개발자 옵션에 액세스할 수 있습니다. Android Auto 앱을 처음 실행할 때에만 개발자 모드를 사용 설정하면 됩니다.

  5. 헤드 단위 서버가 아직 실행되고 있지 않은 경우 화면 오른쪽 상단에 있는 점 3개를 탭하여 더보기 메뉴를 열고 헤드 단위 서버 시작을 선택합니다(그림 1 참고).

    기기의 알림 영역에 서버가 실행 중이라고 나타내는 포그라운드 서비스가 표시됩니다(그림 2 참고).

    개발자 옵션이 있는 컨텍스트 메뉴

    그림 1. 개발자 옵션이 있는 컨텍스트 메뉴

    헤드 단위 서버가 실행 중이라는 알림

    그림 2. 헤드 단위 서버가 실행 중이라는 알림.

  6. Android Auto 앱의 설정 상단에서 이전에 연결된 자동차를 탭하고 Android Auto에 새 자동차 추가가 사용 설정되어 있는지 확인합니다.

  7. USB를 통해 휴대기기를 개발 머신에 연결합니다.

  8. 휴대기기의 화면이 잠금 해제되어 있는지 확인합니다. 해제되어 있지 않으면 DHU를 실행할 수 없습니다.

  9. 개발 머신에서 다음 adb 명령어를 실행하여 소켓 연결을 개발 머신의 포트 5277에서 Android 기기의 동일한 포트 번호로 전달합니다. 이렇게 구성하면 DHU는 TCP 소켓을 통해 휴대전화에서 실행되는 헤드 단위 서버에 연결할 수 있습니다.

    adb forward tcp:5277 tcp:5277
    
  10. SDK_LOCATION/extras/google/auto/ 디렉터리에서 명령어 desktop-head-unit.exe(Windows의 경우) 또는 ./desktop-head-unit(macOS 또는 Linux의 경우)을 실행하여 DHU를 시작합니다.

    cd SDK_LOCATION/extras/google/auto
    desktop-head-unit.exe # Windows
    ./desktop-head-unit # macOS or Linux
    

    개발 머신에서 실행되는 DHU

  11. DHU에 휴대기기를 연결하는 것이 처음이라면 휴대기기의 화면을 확인하여 서비스 약관에 동의하고 필요에 따라 권한 설정을 조정합니다.

DHU를 시작한 후 DHU 콘솔 명령어를 사용하여 앱을 실행하고 테스트할 수 있습니다.

명령줄 옵션

기본적으로 헤드 단위 서버에서는 포트 5277을 통해 연결합니다. 호스트나 포트를 재정의(예: SSH를 통해 전달)하려면 다음 예와 같이 --adb=<[localhost:]port> 플래그를 사용합니다.

./desktop-head-unit --adb=5999

기본적으로 DHU는 터치스크린 사용자 인터페이스를 사용하는 Android Auto 호환 헤드 단위를 에뮬레이션합니다. 마우스로 DHU를 클릭하여 사용자 터치를 시뮬레이션할 수 있습니다. 입력에 로터리 컨트롤러를 사용하는 헤드 단위를 에뮬레이션하려면 다음 예와 같이 -i controller 플래그를 사용하면 됩니다.

./desktop-head-unit -i controller

DHU가 로터리 컨트롤러 모드인 경우 단축키를 사용하여 컨트롤러 작업을 시뮬레이션할 수 있습니다. 자세한 내용은 로터리 컨트롤러를 참고하세요. DHU는 로터리 컨트롤러 모드에서 마우스 클릭을 무시합니다. 따라서 시뮬레이션된 로터리 컨트롤러 작업으로 Android Auto를 작동해야 합니다.

옵션 설명
-c, --config=FILE 지정된 구성 .ini 파일을 사용합니다. 자세한 내용은 DHU 구성 섹션을 참고하세요.
-i, --input=INPUT 지정된 입력 모드 touch, rotary, hybrid 중 하나를 사용합니다.
-a, --adb=HOSTPORT ADB 전송(선택사항 host:port 또는 port)을 사용합니다. 기본값은 포트 5277입니다.
-a, --usb=DEVICE_ID USB(AOA) 전송(선택사항 DEVICE_ID)을 사용합니다.
-v, --version 버전 정보를 표시합니다.
-l, --licenses 오픈소스 라이선스를 표시합니다.
-h, --headless 헤드리스 모드(UI 없음)에서 실행합니다.
-t, --always_show_window_on_top 다른 창 위에 DHU 창을 표시합니다(기본적으로 사용 중지됨).
-?, --help 이 도움말 목록을 표시합니다.

DHU 사용자 가이드

이 섹션에서는 DHU 버전 2.0에서 지원하는 기능과 그 사용법을 설명합니다.

명령어는 DHU를 시작한 터미널 창에 입력됩니다. 여러 명령어를 ;으로 구분하여 같은 줄에서 실행할 수 있습니다.

시스템

명령어 설명
help [command] 전체 명령어 집합을 표시합니다. 명령어 이름이 지정된 경우(예: help day) 이 명령어에 관한 도움말이 표시됩니다.
quit
exit
Alt+Q 헤드 단위를 종료합니다.
sleep [seconds] 1초 동안 절전 모드가 됩니다. 지연 시간을 지정하면 그 seconds 동안 절전 모드로 전환됩니다. 예를 들어 CI 환경에서 헤드 단위(./desktop-head-unit < script.txt)를 스크립팅하는 데 사용할 수 있습니다.
screenshot filename.png 스크린샷을 filename.png.에 저장합니다.
licenses DHU에서 사용되는 라이브러리의 라이선스를 표시합니다.
keycode keycode 키 코드 섹션에 나열된 이름 중 하나인 keycode를 전송합니다.

터치 및 터치패드

터치나 터치패드가 사용 설정된 경우 디스플레이 창(터치의 경우)이나 터치패드 창(터치패드의 경우)을 클릭하면 터치 이벤트로 등록됩니다.

터치의 경우 첫 번째 손가락 위치를 마우스 오른쪽 버튼으로 클릭하고 두 번째 손가락의 경우 오른쪽 버튼을 길게 클릭하여 멀티터치를 시뮬레이션할 수 있습니다. 두 손가락의 중심점은 고정된 채로 유지되고 마우스를 움직이면 가운데를 중심으로 손가락을 회전하거나, 안팎으로 모으거나 벌리거나, 이 두 가지 동작을 모두 할 수 있습니다.

터치패드의 경우 왼쪽 버튼을 길게 클릭하여 화면의 다양한 UI 요소 사이를 스크롤합니다. 오른쪽 버튼을 클릭하면 현재 포커스가 있는 요소가 선택됩니다.

명령어 설명
tap x y 지정된 좌표에서 터치 이벤트를 시뮬레이션합니다.

로터리 컨트롤러

DHU는 로터리 컨트롤러를 지원합니다. 컨트롤러를 사용 설정하면 다음 작업이 지원됩니다.

  • D패드의 위, 아래, 왼쪽, 오른쪽
  • 시계 방향 및 시계 반대 방향으로 회전
  • 휙 돌리기(한 번에 5단계) 실행
  • 컨트롤러를 클릭한 다음 컨트롤러를 다시 사용

명령어와 키 바인딩은 아래에 나와 있습니다.

마우스의 스크롤 휠은 dpad rotate 명령어를 전송하고 가운데 마우스 버튼 클릭(일반적으로 스크롤 휠)은 dpad click 명령어를 전송합니다.

대다수 자동차에는 터치스크린이 있습니다. 로터리 컨트롤러만 있는 자동차도 있고 하이브리드 터치 및 컨트롤러가 있는 자동차도 있습니다. 자동차는 지도 화면 이동 및 텍스트 입력에 사용할 수 있는 터치패드도 지원할 수 있습니다. 여러 차량 헤드 단위를 시뮬레이션할 때는 이러한 다양한 구성에 유의하세요.

명령어 설명
dpad {up|down|left|right} 화살표 키 로터리 컨트롤러의 이동입니다.
dpad {ur|dl|ul|dr} 로터리 컨트롤러의 이동입니다.
dpad soft {left|right} Shift + 화살표 키 일부 로터리 컨트롤러에서 사용할 수 있는 사이드 버튼입니다.
dpad click Return 키 로터리 컨트롤러를 누릅니다.
dpad back 백스페이스 일부 로터리 컨트롤러에서 사용할 수 있는 뒤로 버튼입니다.
dpad rotate left 1 로터리 컨트롤러의 왼쪽(시계 반대 방향) 이동입니다.
dpad rotate right 2 로터리 컨트롤러의 오른쪽(시계 방향) 이동입니다.
dpad flick left Shift+1 로터리 컨트롤러의 빠른 시계 반대 방향 회전입니다.
dpad flick right Shift+2 로터리 컨트롤러의 빠른 시계 방향 회전입니다.
dpad 0-9*#+ 숫자 패드

마이크

DHU는 음성 입력에 마이크 사용 또는 사전 녹음된 음성 트랙 재생을 지원합니다. 편의를 위해 일반 음성 명령에 다음과 같은 사운드 파일을 제공했습니다. 이러한 사운드 파일은 SDK_LOCATION/extras/google/auto/voice/ 디렉터리에 설치됩니다.

파일 이름 텍스트
navhome.wav 집까지 경로 안내
navwork.wav 직장까지 경로 안내
navsoh.wav 시드니 오페라 하우스까지 경로 안내
navgoogle.wav 서울특별시 강남구 테헤란로 152까지 경로 안내
exitnav.wav 내비게이션 종료
howlong.wav 거기까지 얼마나 걸려?
showtraffic.wav 교통정보 표시
showalternateroute.wav 대체 경로 보여 줘
pause.wav 음악 일시중지
nextturn.wav 다음 회전은 언제야?

DHU 프롬프트에서 개별 .wav 파일을 실행하려면 다음 안내를 따르세요.

mic play /path/to/filename.wav
명령어 설명
mic begin M 마이크를 활성화하고(핸들 버튼을 클릭하는 것과 같음) 컴퓨터 마이크의 입력을 기다립니다.
mic play filename.wav 마이크를 활성화하고 지정된 WAV 파일 녹음을 재생합니다. 참고: WAV 파일이 재생되는 소리는 들리지 않지만 Android Auto의 응답은 들립니다.
mic repeat mic play와 함께 사용된 마지막 녹음을 반복합니다.
mic reject {on|off} 마이크 요청 거부를 사용 설정하거나 사용 중지합니다. 사용 설정하면 모든 마이크 요청이 거부됩니다.

센서

DHU는 다음 명령어를 사용하여 차량 센서 데이터의 변경사항 시뮬레이션을 지원합니다. 센서 데이터를 모의 처리하여 Android Auto에 전송하려면 DHU를 시작할 때 구성 .ini 파일로 상응하는 센서를 사용 설정해야 합니다.

명령어 설명
fuel [percentage] 연료 잔량을 지정된 비율로 설정하거나 연료 잔량을 사용 중지하는 값을 전달하지 않습니다.
range [km] 주행 거리를 지정된 킬로미터로 설정하거나 주행 거리 데이터를 사용 중지하는 값을 전달하지 않습니다.
lowfuel [{on|off}] 연료 부족 경고 센서를 설정하거나 센서를 사용 중지하는 값을 전달하지 않습니다.
accel [x] [y] [z] 가속도계를 지정된 x, y, z 값(m/s^2)으로 설정하거나 가속도계 데이터를 설정 해제하는 매개변수를 전달하지 않습니다. 필요하다면 NAN을 전달하여 선택적 매개변수를 건너뜁니다.
compass bearing [pitch] [roll] 나침반을 지정된 방위, 피치, 롤 값(도)으로 설정합니다. 필요하다면 NAN을 전달하여 선택적 매개변수를 건너뜁니다.
gyro [x] [y] [z] 자이로스코프를 지정된 x, y, z 회전 속도(rad/s)로 설정하거나 자이로스코프 데이터를 설정 해제하는 매개변수를 전달하지 않습니다. 필요하다면 NAN을 전달하여 선택적 매개변수를 건너뜁니다.
location lat long [accuracy] [altitude] [speed] [bearing] 위치를 선택적 정확도(m), 고도(m), 속도(m/s), 방위(도)와 함께 지정된 위도와 경도 값으로 설정합니다. 필요하다면 NAN을 전달하여 선택적 매개변수를 건너뜁니다.
odometer km [current_trip_km] 주행 거리계를 선택적 현재 트립 킬로미터 값과 함께 지정된 킬로미터로 설정합니다.
speed [speed] 차량 속도를 지정된 값(m/s)으로 설정하거나 센서를 사용 중지하는 값을 전달하지 않습니다.
tollcard {insert|remove} 통행료 카드의 삽입 여부를 나타냅니다.

주간/야간 모드

DHU는 다음 명령어와 키 결합을 통해 주간 모드와 야간 모드 간 변경 시뮬레이션을 지원합니다.

명령어 설명
day Shift+N 주간 모드(높은 밝기, 전체 색상)를 활성화합니다.
night Ctrl+N 야간 모드(낮은 밝기, 고대비)를 활성화합니다.
daynight
nightday
N 현재 주간 또는 야간 모드를 전환합니다.

포커스 관리

DHU는 다음 명령어를 사용하여 Android Auto에서 헤드 단위에 포커스를 두는지 시뮬레이션하는 것을 지원합니다.

명령어 설명
focus video {on|off|toggle} Android Auto에서 헤드 단위에 동영상 포커스를 두는지를 사용 설정하거나 사용 중지합니다. 동영상 포커스를 사용 중지하면 기본 모드로 전환되는 헤드 단위를 시뮬레이션합니다.
focus audio {on|off|toggle} Android Auto에서 헤드 단위에 오디오 포커스를 두는지를 사용 설정하거나 사용 중지합니다. 오디오 포커스를 사용 중지하면 자체 오디오 소스를 재생하는 헤드 단위를 시뮬레이션합니다.
focus nav {on|off|toggle} Android Auto에서 헤드 단위에 탐색 포커스를 두는지를 사용 설정하거나 사용 중지합니다. 탐색 포커스를 사용 중지하면 자체 탐색 시스템을 실행하는 헤드 단위를 시뮬레이션합니다.

제한사항/운전 상태

DHU는 차량 이동 시 키보드 사용 중지와 휴대전화 구성 금지와 같은 특정한 제한사항의 시뮬레이션을 지원합니다.

명령어 설명
restrict none U 모든 제한사항을 사용 중지합니다.
restrict all Shift+U 모든 제한사항(예: 운전 시뮬레이션)을 사용 설정합니다.

계기판

DHU는 다음 도로 이름이나 거리/시간, 회전 화살표 등 내비게이션 중에 다음 회전에 관한 기본 정보와 진행 중인 전화 통화에 관한 정보가 표시되는 계기판(핸들 뒤에 일반적으로 위치함) 에뮬레이션을 지원합니다.

내비게이션 및 통화 상태 정보를 모두 표시하는 DHU의 계기판 창

이는 구성 파일의 [general] 섹션에 있는 instrumentcluster 항목을 사용하거나 각 기능을 개별적으로 제어하는 navcluster 또는 phonecluster 항목으로 사용 설정할 수 있습니다.

[general]
...
instrumentcluster = true

계기판 디스플레이

일부 차량에는 지도 타일과 같이 풍부한 시각적 정보를 표시할 수 있는 계기판 디스플레이가 있습니다. DHU 버전 2.1(현재 Android 스튜디오 베타 업데이트 채널을 통해 사용 가능)부터 개발 머신에서 이러한 디스플레이를 에뮬레이션할 수 있습니다.

계기판 [display] 섹션이 있는 구성 파일을 사용하면 됩니다. [display] 섹션은 파일의 [general] 섹션에서 구성된 기본 디스플레이와 동일한 동영상 구성 옵션을 지원합니다.

그림 3. 보조 계기판 디스플레이로 DHU를 실행할 때의 기본 화면
그림 4. 보조 계기판 디스플레이로 DHU를 실행할 때의 계기판 화면
...

# The display name following the colon can be whatever you like.
[display:cluster]
# Setting the displaytype as cluster is what lets the DHU know how to handle it.
displaytype = cluster
resolution = 800x480
dpi = 160
...

이 구성은 기존 .ini 파일에 직접 추가하거나 DHU를 실행할 때 별도의 파일에 저장하고 여러 구성 파일을 전달하여 재사용할 수 있습니다. 구성 파일을 여러 개 사용하는 경우 지정된 값의 이후 정의가 이전 정의를 재정의합니다.

# Launch your landscape configuration with your cluster display configuration
./desktop-head-unit -c landscape.ini -c cluster.ini

# Launch the portait configuration with the same cluster display configuration
./desktop-head-unit -c portrait.ini -c cluster.ini

미디어 재생 상태

DHU는 미디어 재생 상태(예: 재생 중인 트랙)를 보여주는 추가 정보 표시를 지원합니다.

재생 정보를 보여주는 DHU의 미디어 재생 상태 창

[general] 섹션의 playbackstatus 항목을 사용하여 사용 설정할 수 있습니다.

[general]
...
playbackstatus = true

키 코드

DHU는 다양한 차량에서 일반적으로 사용할 수 있는 단축키 버튼 집합을 시뮬레이션하는 일련의 기본 키 코드를 제공합니다. 예를 들어 home 키 코드를 다음과 같이 DHU 프롬프트에서 트리거할 수 있습니다.

keycode home
키 코드 설명
home 홈 화면으로 이동합니다.
back 뒤로 이동
call
endcall
전화를 걸거나 끊습니다.
search 검색을 트리거합니다.
media_play_pause
media_play
media_pause
미디어를 재생하거나 일시중지합니다.
media_next
media_previous
다음 미디어 트랙이나 이전 미디어 트랙으로 이동합니다.
media 기본 미디어 앱으로 이동합니다.
navigation 기본 내비게이션 앱으로 이동합니다.
tel 기본 전화 앱으로 이동합니다.

DHU 구성

DHU는 사용할 수 있는 입력 모드(터치, 컨트롤러), 프레임 속도, 해상도, 헤드 단위가 휴대전화에서 요청하는 DPI를 변경하는 구성 .ini 파일을 지원합니다.

구성 파일의 기본 위치는 ~/.android/headunit.ini입니다. 시스템에서 헤드 단위의 구성을 변경하려면 이 파일을 수정하면 됩니다.

-c 플래그를 사용하여 로드할 구성 파일도 지정할 수 있습니다.

./desktop-head-unit -c /path/to/config.ini
샘플 구성
[general]
touch = true
touchpad = false
controller = false
instrumentcluster = false
resolution = 800x480
dpi = 160
framerate = 30
fueltypes = unleaded,electric,hydrogen
evconnectors = supercharger

샘플 구성 파일은 SDK_LOCATION/extras/google/auto/config/ 폴더에서 확인할 수 있고 테스트할 수 있는 다양한 헤드 단위 설정을 보여 줍니다. 고급 사용 사례는 아래 지원되는 설정을 참고하세요.

입력 구성
이름 기본 유형 설명
inputmode default 문자열 입력 모드를 정의합니다. touch, rotary, hybrid 옵션은 터치스크린과 로터리 지원을 사용 설정 및 사용 중지하고 기본 키 코드를 적절하게 설정하는 반면 default는 아래 touchcontroller 옵션을 따릅니다.
controller false 부울 로터리 컨트롤러 입력을 사용 설정합니다. inputmodedefault가 아니면 무시됩니다.
touch true 부울 터치스크린을 사용 설정합니다. inputmodedefault가 아니면 무시됩니다.
touchpad false 부울 터치패드를 사용 설정합니다.
touchpadnavigation false 부울 터치패드를 UI 내비게이션에 사용하도록 설정합니다.
touchpadtapasselect false 부울 true인 경우 터치패드를 탭하는 것이 선택 이벤트입니다.
touchpaduiabsolute false 부울 touchpadnavigationtrue이면 터치를 절댓값으로 간주해야 하는지 또는 동작으로 간주해야 하는지 설정합니다.
동영상 구성

Android Auto는 세 가지 동영상 해상도를 지원합니다.

  1. 480p(800x480 -- 기본값)
  2. 720p(1280x720)
  3. 1080p(1920x1080)

위 세 가지 이외의 다른 가로세로 비율을 지원하기 위해 헤드 단위는 필요에 따라 레터박스/필러박스에 여백을 지정할 수 있습니다. 예를 들어 1000x600 화면을 원한다면 해상도를 720p(1280x720), 여백 너비를 280, 여백 높이를 120으로 설정합니다. 이렇게 하면 왼쪽과 오른쪽 가장자리에 모두 140px 여백이, 상단과 하단에 60px가 추가되는 효과가 있습니다.

일반적인 6인치 화면(750x450)을 에뮬레이션하는 구성 예:

[general]
...
resolution = 800x480
marginwidth = 50
marginheight = 30

와이드 스크린:

[general]
...
resolution = 1280x720
marginwidth = 0
marginheight = 220
이름 기본 유형 설명
resolution 800x480 문자열 800x480, 1280x720, 1920x1080 중 하나입니다.
dpi 160 정수
normalizedpi false 부울 true이면 더 큰 DPI 값을 고려하여 DHU 창 크기를 줄입니다. false이면 DPI 값이 클수록 창이 더 커집니다(실제 디스플레이를 모방하지 않지만 시각적 콘텐츠를 더 쉽게 검사할 수 있음).
realdpi 160 정수 동영상 구성에 사용됩니다.
framerate 30 정수 동영상 구성에 사용됩니다.
marginheight 0 정수 동영상 구성에 사용됩니다.
marginwidth 0 정수 동영상 구성에 사용됩니다.
margins 0,0,0,0 문자열 동영상 구성에 사용되고 marginwidthmarginheight가 있으면 재정의합니다. 형식은 상단, 하단, 왼쪽, 오른쪽입니다.
contentinsets 0,0,0,0 문자열 동영상 구성에 사용됩니다. 포맷은 top, bottom, left, right입니다.
stablecontentinsets 0,0,0,0 문자열 동영상 구성에 사용됩니다. 기본값은 contentinsets입니다. 포맷은 top, bottom, left, right입니다.
cropmargins false 부울 margins, marginheight 또는 marginwidth가 지정되면 이 설정의 true 값이 표시된 동영상에서 이러한 여백을 삭제합니다. 이는 최종 사용자가 보는 대상을 더 자세히 반영합니다.
pixelaspectratio 1.0 부동 소수점 수 동영상 구성에 사용됩니다.
센서 구성

센서 데이터를 모의 처리하여 Android Auto에 전송하려면 아래 옵션을 사용하여 상응하는 센서를 사용 설정해야 합니다. 센서가 사용 중지되면 DHU 명령어를 사용하여 센서에 전송된 데이터가 무시됩니다.

이름 기본 유형 설명
accelerometer false 부울 가속도계 센서 데이터를 사용 설정합니다.
compass false 부울 나침반 센서 데이터를 사용 설정합니다.
driving_status false 부울 운전 상태 센서 데이터를 사용 설정합니다.
fuel false 부울 연료 센서 데이터를 사용 설정합니다.
gyroscope false 부울 자이로스코프 센서 데이터를 사용 설정합니다.
location false 부울 차량 위치 센서 데이터를 사용 설정합니다.
night_mode false 부울 야간 모드 센서 데이터를 사용 설정합니다.
odometer false 부울 주행 거리계 센서 데이터를 사용 설정합니다.
speed false 부울 속도 센서 데이터를 사용 설정합니다.
toll_card false 부울 통행료 카드 센서 데이터를 사용 설정합니다.
기타
이름 기본 유형 설명
instrumentcluster false 부울 계기판을 사용 설정합니다. UI에 창을 추가하여 내비게이션 및 휴대전화 상태를 표시합니다.
navcluster false 부울 계기판을 사용 설정합니다. UI에 창을 추가하여 내비게이션 상태를 표시합니다.
phonecluster false 부울 계기판을 사용 설정합니다. UI에 창을 추가하여 휴대전화 상태를 표시합니다.
playbackstatus false 부울 재생 상태를 사용 설정합니다. UI에 창을 추가하여 재생 상태 메시지를 표시합니다.
driverposition left 문자열 left, center, right 중 하나입니다.
windowleft 정수 기본 창의 왼쪽 위치를 설정합니다.
windowtop 정수 기본 창의 상단 위치를 설정합니다.
fueltypes unleaded 문자열 다음 중 하나 이상(콤마로 구분)입니다.
  • unleaded
  • leaded
  • diesel-1
  • diesel-2
  • biodiesel
  • e85
  • lpg
  • cng
  • lng
  • hydrogen
  • electric
  • other
  • unknown
evconnectors 문자열 다음 중 0개 이상(콤마로 구분)입니다.
  • j1772
  • mennekes
  • chademo
  • combo-1
  • combo-2
  • roadster
  • hpwc
  • gbt
  • supercharger
  • other
  • unknown
fueltypeselectric이 포함된 경우에만 설정해야 합니다.

문제 해결

최초 연결 시 DHU에 빈 화면이 표시됨

이는 알려진 문제로 현재 Google에서 해결 중입니다. 이 문제를 해결하려면 다음 단계를 따르세요.

  1. DHU를 닫습니다.
  2. DHU 실행에 설명된 5단계를 따라 헤드 단위 서버를 중지했다가 다시 시작합니다.
  3. DHU를 다시 시작합니다.
  4. 전화 화면에 추가 권한 부여 단계가 있을 수 있습니다. 그러한 단계를 완료하면 DHU가 한 번 더 종료될 수 있습니다.
  5. DHU를 다시 시작합니다.

Android Automotive OS에서 앱 테스트

Android Emulator를 사용해 앱이 Android Automotive OS에서 어떻게 실행되는지 테스트할 수 있습니다. 이 섹션에서는 Android Virtual Device(AVD)를 설정하여 앱을 테스트하는 방법을 설명합니다.

미디어 앱의 실행 구성 수정

Automotive OS 앱의 미디어 앱은 다른 Android 앱과 다릅니다. Android Automotive OS는 명시적 인텐트를 사용하고 미디어 브라우저 서비스에 호출을 전송하여 미디어 앱과 상호작용합니다.

앱을 테스트하려면 앱의 매니페스트에 실행 활동이 없는지 확인하고 다음 단계에 따라 자동차 모듈이 활동으로 실행되는 것을 방지하세요.

  1. Android 스튜디오에서 Run > Edit Configurations를 선택합니다.

    Run/Debug Configurations 대화상자

  2. 앱의 모듈 목록에서 자동차 모듈을 선택합니다.

  3. Launch Options > Launch에서 Nothing을 선택합니다.

  4. Apply를 클릭한 후 OK를 클릭합니다.

시스템 이미지 추가

특정 제조업체 하드웨어와 일치하는 AVD를 생성하려면 먼저 Android 스튜디오 SDK Manager를 통해 이러한 기기의 시스템 이미지를 추가해야 합니다. 그런 다음 AVD를 만들 때 이 시스템 이미지를 다운로드하여 AVD와 함께 사용할 수 있습니다.

자동차 제조업체의 시스템 이미지 추가

GM, Honda, Polestar, Volvo 등에 OEM별 시스템 이미지를 추가할 수 있습니다. OEM 개발자 사이트의 단계를 따르세요.

알파벳순으로:

  1. GM
  2. Honda
  3. Polestar
  4. Volvo

일반 시스템 이미지 설치

Android 스튜디오에는 앱 테스트에 사용할 수 있는 Android Automotive OS용 일반 시스템 이미지도 포함되어 있습니다. 이 일반 시스템 이미지에는 Google 어시스턴트가 포함되어 있으므로 앱 통합을 테스트할 수 있습니다.

다음 단계를 따라 일반 시스템 이미지를 설치하세요.

  1. Android 스튜디오에서 Tools > SDK Manager를 선택합니다.
  2. SDK Platforms 탭을 클릭합니다.
  3. Show Package Details를 클릭합니다.
  4. Android 9.0 (Pie)에서 Automotive Intel x86 Atom System Image를 선택합니다.
  5. Apply를 클릭한 후 OK를 클릭합니다.

    일반 시스템 이미지가 선택된 SDK 플랫폼 구성요소 목록

자동차 AVD 생성 및 에뮬레이터 실행

다음 단계에 따라 Android Automotive OS 차량을 대표하는 AVD(Android Virtual Device)를 만든 후 이 AVD를 사용하여 에뮬레이터를 실행하세요.

  1. Android 스튜디오에서 Tools > AVD Manager를 선택합니다.
  2. Create Virtual Device를 클릭합니다.
  3. Select Hardware 대화상자에서 Automotive를 선택한 다음 기기를 선택하고 Next를 클릭합니다.
  4. Android 9.0 (Automotive)과 같이 Automotive를 타겟으로 한 시스템 이미지를 선택하고 Next를 클릭합니다.
  5. AVD에 이름을 지정하고 맞춤설정하고 싶은 다른 옵션을 선택한 다음 Finish를 클릭합니다.
  6. 도구 창 모음에서 Android Automotive OS AVD를 배포 타겟으로 선택합니다.
  7. Run 실행 아이콘을 클릭합니다.

미디어 앱을 위한 추가 테스트 요구사항

미디어 앱을 테스트하는 경우 Android Auto나 Android Automotive OS 또는 둘 다에서 앱을 테스트하는 것 외에도 이 섹션에서 다루는 시나리오를 테스트해야 합니다.

MediaBrowserService 시작 시나리오 테스트

운전자와 승객을 안전하게 보호하기 위해, 사용자가 운전 중에 앱과 상호작용할 수 있는 방법에 추가 제한사항이 적용됩니다. 이러한 이유로 Android Auto 및 Android Automotive OS에는 사용자가 운전하는 동안 콘텐츠를 계속 즐길 수 있도록 앱에서 처리할 수 있어야 하는 MediaBrowserService 시작 시나리오가 있습니다.

앱을 테스트하여 다음 각 시나리오를 처리할 수 있는지 확인합니다.

  • MediaBrowserServiceActivity가 열리기 전에 실행됩니다.
  • MediaBrowserService는 표시할 수 있는 Activity가 없을 때 실행됩니다.
  • MediaBrowserService는 사용자가 로그인하지 않은 경우 실행됩니다.

이러한 시나리오를 테스트하는 동안 다음 방법을 시도해야 합니다.

  • 미디어 앱을 강제 종료한 다음 Android Auto나 Android Automotive OS를 실행합니다.
  • 미디어 앱 데이터를 지운 다음 Android Auto나 Android Automotive OS를 실행합니다.

또한 필요에 따라 적절한 오류 메시지를 설정해야 합니다.

미디어 테스트 도구

미디어 컨트롤러 테스트 앱을 사용하면 Android에서 미디어 재생과 관련된 복잡한 문제를 테스트하고 미디어 세션 구현을 확인할 수 있습니다. 이 도구를 시작하려면 미디어 컨트롤러 테스트 앱 사용을 참고하세요.