주행 규제 개발 가이드
Pleos Connect 앱은 플랫폼이 제공하는 CarUxRestrictions 상태에 맞춰 주행 중 UX 제한 사항을 구현해야 합니다. 이 문서는 HMG CarUxRestrictions 아키텍처와 앱 구현 시 유의 사항을 설명합니다. 지역·기능별 제한 범위와 규제 ON/OFF 기준은 지역별 주행 규제 정책을, 운전 중 UX 설계 원칙은 주행 안전을 고려한 설계를 참조합니다.
HMG CarUxRestrictions 아키텍처 (OEM Custom)
Pleos Connect는 AAOS CarUxRestrictions를 HMG 차량 사양에 맞게 OEM Custom으로 제공합니다. 플랫폼은 CarDrivingStateService의 기본 로직을 사용하지 않으며, HmgCarDrivingStateService가 HMG 사양에 맞는 주행 상태 값을 AAOS에 주입합니다. 앱은 Application 계층의 CarUxRestrictionsManager와 CarDrivingStateManager만 사용합니다.

다이어그램에서 HMG OEM Custom은 HmgCarDrivingStateService가 HMG 사양에 맞는 주행 상태를 산출하는 구간입니다. 주행 규제 ON/OFF 판단(속도·기어·브레이크 등)은 플랫폼 내부에서 처리되며, 앱에 공개되는 것은 Manager API를 통해 전달되는 주행 상태·UX 제한뿐입니다.
CarUxRestrictions 연동
앱은 AAOS CarUxRestrictionsManager를 통해 CarUxRestrictions 값을 얻어 주행 규제 상태를 확인하고, 사양에 맞게 동작하도록 구현합니다.
CarUxRestrictionsManager에 register한 뒤 notify로 CarUxRestrictions 변경을 수신합니다. CarDrivingStateManager로 주행 상태를 함께 참고할 수 있습니다.
샘플 코드
if (mCurrentCarUxRestrictions.isRequiresDistractionOptimization()
&& (mCurrentCarUxRestrictions.getActiveRestrictions()
& CarUxRestrictions.UX_RESTRICTIONS_NO_VIDEO) != 0) {
stopPlayingVideo();
}
UX 규제 항목과 CarUxRestrictions 매핑
기능별 CarUxRestrictions 플래그는 CarUxRestrictions API와 notify로 수신한 ActiveRestrictions를 기준으로 적용합니다.
- 예: 동영상(DMB)은
CarUxRestrictions.UX_RESTRICTIONS_NO_VIDEO로 주행 중 재생 제한 여부를 판단합니다. - UX 규제 피그마 사양서는 Pleos Playground에 공개하지 않습니다.
플랫폼이 지역별 규제 사양에 맞는 ActiveRestrictions를 내려주므로, 앱은 product.sw.target_region으로 CarUxRestrictions를 바꾸지 않고 notify로 수신한 CarUxRestrictions만 반영하면 됩니다. QR·키보드·검색 등 기능별 지역 허용·잠금과 플래그 매핑은 지역별 주행 규제 정책을 참조합니다.
UX_RESTRICTIONS_NO_SETUP_QR_SCAN 등 HMG 확장 @hide 상수는 공개 SDK에 없을 수 있습니다. 그때는 플랫폼팀이 배포하는 android-car.jar를 사용합니다. HMG CFI Libs 문서를 참조하거나 플랫폼팀에 문의 바랍니다.
주행 규제 테스트
개발 검증 시 VHAL 이벤트를 주입해 주행 규제 ON/OFF를 시뮬레이션할 수 있습니다. Connect-W 등 플랫폼별 다른 절차는 ADB 명령 참조 가이드 — 주행 규제를 참조합니다.
주행 규제 ON (Connect-S/L/W 공통)
아래 명령 실행 시 주행 규제가 켜지고, -t 초(예: 60) 후 자동으로 꺼집니다.
adb shell "dumpsys activity service com.android.car inject-vhal-event 0x21408A93 1; dumpsys activity service com.android.car inject-vhal-event 0x11600207 30 -t 60"
adb shell "dumpsys activity service com.android.car inject-vhal-event 0x21408209 1; dumpsys activity service com.android.car inject-vhal-event 0x11600207 30 -t 60"
adb shell "dumpsys activity service com.android.car inject-vhal-event 0x214081A4 1; dumpsys activity service com.android.car inject-vhal-event 0x11600207 30 -t 60"
주행 규제 OFF (Connect-S/L/W 공통, 수동)
ON 상태에서 자동 해제 전에 수동으로 끄려면 차종별로 Engine Running 신호만 0(OFF)으로 주입합니다.
# ICE
adb shell dumpsys activity service com.android.car inject-vhal-event 0x21408A93 0
# HEV
adb shell dumpsys activity service com.android.car inject-vhal-event 0x21408209 0
# EV
adb shell dumpsys activity service com.android.car inject-vhal-event 0x214081A4 0