2026년부터 트렁크 안정 개발 모델과 일치하고 생태계의 플랫폼 안정성을 보장하기 위해 2분기와 4분기에 AOSP에 소스 코드를 게시합니다. AOSP를 빌드하고 기여하려면 aosp-main 대신 android-latest-release를 사용하는 것이 좋습니다. android-latest-release 매니페스트 브랜치는 항상 AOSP에 푸시된 최신 버전을 참조합니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
Google uses AI technology to translate content into your preferred language. AI translations can contain errors.
속성 구성
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
지원되는 각 속성은 VehiclePropConfig 구조를 통해 정의된 속성 구성으로 지정되며 다음 필드가 있습니다.
| 필드 |
설명 |
|---|
prop |
속성 ID입니다. 이는 VehicleProperty.aidl에서 정의된 시스템 속성 중 하나이거나 공급업체 속성이어야 합니다. 속성 ID는 다음 필드의 비트 OR을 사용하여 구성됩니다(오른쪽에서 왼쪽).
- (0x00000000) 16비트: 범위 0x0100~0xffff의 고유 ID입니다.
- (0x00000000) 8비트: 속성의 유형을 정의하는 속성 유형입니다.
- (0x00000000) 4비트: 지역 유형
- (0x00000000) 4비트:
VehiclePropertyGroup SYSTEM(0x10000000) 또는 VENDOR (0x20000000)입니다. 맞춤설정할 수 있는 속성은 공급업체 속성을 참고하세요.
예를 들면 다음과 같습니다.
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- 속성의 액세스 모드입니다.
READ, WRITE, READ_WRITE 중 하나여야 합니다.
- 시스템 속성의 경우
VehicleProperty.aidl에 문서화된 정의된 액세스 모드 중 하나여야 합니다.
- 영역별 액세스 권한이 있는 속성의 경우 영역별 액세스 권한의 최대 하위 집합입니다. 예를 들어 속성에 액세스 권한이
READ 및 READ_WRITE인 두 영역이 있는 경우 READ로 설정해야 합니다.
|
changeMode |
- 속성의 모드를 변경합니다.
STATIC, ON_CHANGE, CONTINUOUS 중 하나여야 합니다. STATIC는 시스템 부팅 후 속성 값이 변경되지 않음을 의미합니다. ON_CHANGE는 값이 변경될 때 VHAL이 보고해야 함을 의미합니다. CONTINUOUS는 속성 값이 지속적으로 변경되며 VHAL은 구독 샘플링 속도에 따라 보고해야 함을 의미합니다.
- 시스템 속성의 경우
VehicleProperty.aidl에 설명된 변경 모드와 같아야 합니다.
|
configArray |
속성별 구성을 포함하는 선택적 배열입니다. 비어 있을 수 있습니다. 특정 시스템 속성(예: GEAR_SELECTION)의 경우 구성 배열에 특별한 의미가 있으며 지정해야 합니다.
|
configString |
속성별 구성을 포함하는 선택적 문자열입니다. 비어 있을 수 있습니다. |
minSampleRate 및 maxSampleRate |
연속 속성에 지원되는 최소 및 최대 샘플링 레이트 (Hz)입니다. 속성이 연속적이지 않은 경우 사용되지 않습니다. minSampleRate 및 maxSampleRate은 VHAL 구현으로 달성할 수 있어야 합니다. 최솟값과 최댓값 사이의 모든 샘플링 레이트가 지원되어야 하는 것은 아닙니다. |
숙박 시설 유형
VehiclePropertyType.aidl의 enum으로 정의됩니다. 지원되는 속성 유형은 다음 표에 나와 있습니다.
| 속성 유형 |
값 |
설명 |
|---|
STRING |
0x00100000 |
문자열 속성으로, 차량 속성 값의 stringValue 필드를 사용합니다. |
BOOLEAN |
0x00200000 |
Boolean 속성은 차량 속성 값의 int32Values 필드에 있는 첫 번째 요소를 사용합니다.
0은 false을 의미하고 None 0은 true을 의미합니다. |
INT32 |
0x00400000 |
Integer 속성은 차량 속성 값의 int32Values 필드에 있는 첫 번째 요소를 사용합니다. |
INT32_VEC |
0x00410000 |
Integer[] 속성은 차량 속성 값의 int32Values 필드에 있는 요소를 사용합니다. |
INT64 |
0x00500000 |
긴 속성으로, 차량 속성 값의 int64Values 필드에 있는 첫 번째 요소를 사용합니다. |
INT64_VEC |
0x00510000 |
Long[] 속성은 차량 속성 값의 int64Values 필드에 있는 요소를 사용합니다. |
FLOAT |
0x00600000 |
Float 속성은 차량 속성 값의 floatValues 필드에 있는 첫 번째 요소를 사용합니다. |
FLOAT_VEC |
0x00610000 |
Float[] 속성은 차량 속성 값의 floatValues 필드에 있는 요소를 사용합니다. |
BYTES |
0x00700000 |
byte[] 속성은 차량 속성 값의 byteValues 필드에 있는 요소를 사용합니다. |
MIXED |
0x00e00000 |
혼합 유형 속성입니다. 스칼라 또는 벡터 유형의 조합 정확한 형식은 속성 구성의 구성 배열에 제공해야 합니다.
공급업체 MIXED 유형 속성의 경우 configArray는 다음 구조로 형식이 지정되어야 합니다.
configArray[0]: 1은 속성에 String 값이 있음을 나타냅니다.
configArray[1]: 1은 속성에 Boolean 값이 있음을 나타냅니다.
configArray[2]: 1은 속성에 Integer 값이 있음을 나타냅니다.
configArray[3]인 경우 숫자는 속성에서 Integer[]의 크기를 나타냅니다.
configArray[4]: 1은 속성에 Long 값이 있음을 나타냅니다.
configArray[5]인 경우 숫자는 속성에서 Long[]의 크기를 나타냅니다.
configArray[6]: 1은 속성에 Float 값이 있음을 나타냅니다.
configArray[7]인 경우 숫자는 속성에서 Float[]의 크기를 나타냅니다.
configArray[8]인 경우 숫자는 속성의 byte[] 크기를 나타냅니다.
예를 들어 configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}는 속성에 String 값, Boolean 값, Integer 값, 정수 3개가 있는 배열이 있음을 나타냅니다.
|
영역 ID 구성
각 속성 구성에는 영역 ID 구성 목록이 포함될 수도 있습니다. 이 목록은 전역 속성의 경우 선택사항이며 구역 분할 속성 (지원되는 영역이 여러 개인 속성)의 경우 필수입니다. 각 지역 ID 구성에는 다음 필드가 있습니다.
| 필드 |
설명 |
|---|
areaId |
이 영역의 ID입니다. 영역 ID를 참고하세요. |
minInt32Value 및 maxInt32Value |
- 부팅 시 INT32 유형 속성의 선택적 최소 및 최대 값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0이면 무시됩니다.
- 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
- 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에
IVehicle#getMinMaxSupportedValue 구현
|
minInt64Value 및 maxInt64Value |
- 부팅 시 INT64 유형 속성의 선택적 최소 및 최대 값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0이면 무시됩니다.
- 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
- 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에
IVehicle#getMinMaxSupportedValue 구현
|
minFloatValue 및 maxFloatValue |
- 부팅 시 부동 소수점 유형 속성의 선택적 최솟값 및 최댓값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0.0이면 무시됩니다.
- 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
- 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에
IVehicle#getMinMaxSupportedValue 구현
|
(Android 14의 새로운 기능)
supportedEnumValues |
- 속성이 enum 유형 속성으로 정의된 경우 부팅 시 지원되는 값의 선택적 목록입니다. 지정되지 않았거나 (비어 있음) Android 14 이전인 경우 모든 enum 값이 지원되는 것으로 간주됩니다.
- 전역 속성의 경우 지원되는 enum 값을 정의해야 하는 경우 영역 ID가 0인 영역 구성 하나를 사용해야 합니다.
- 이 값은 정적이며 런타임에 지원되는 값이 변경되더라도 변경되지 않습니다. 동적으로 지원되는 값에
IVehicle#getSupportedValuesLists를 구현합니다.
- 열거형 유형 속성에만 적용됩니다. 다른 유형의 경우 이 필드는 비워야 합니다.
다른 비 enum 유형의 지원 값을 노출하려면
IVehicle#getSupportedValuesLists를 사용하세요.
|
(Android 15의 새로운 기능)
supportVariableUpdateRate |
- 가변 업데이트 속도가 지원되는지 여부입니다. 이 기능은 연속 속성에만 적용됩니다.
- 이 값이
true이면 앱은 속성 값이 변경될 때만 속성 업데이트 이벤트를 수신하도록 정기 결제의 변수 업데이트 속도를 사용 설정할 수 있습니다(연속 속성을 변경 시 속성으로 처리).
- 속성의 모든 구독자가 가변 업데이트 속도를 사용 설정하는 경우 VHAL에 대한 구독 요청은 속성의 가변 업데이트 속도를 사용 설정하며 VHAL은 속성 값이 변경될 때만 속성 업데이트 이벤트를 전송해야 합니다.
- 구독자가 고정 업데이트 속도를 요청하는 경우 VHAL에 대한 구독 요청은 속성의 가변 업데이트 속도를 사용 중지하고 AAOS는 가변 업데이트 속도를 요청하는 클라이언트의 중복 이벤트를 필터링합니다.
- 속성 데이터가 크고(예: 크기가 1k인 바이트 배열) 캐싱을 위해 많은 메모리를 차지할 수 있는 경우가 아니라면 성능 향상을 위해 모든 비하트비트 연속 속성에 가변 업데이트 속도를 지원할 것을 적극 권장합니다(HIGHLY RECOMMENDED).
|
(Android 16의 새로운 기능)
hasSupportedValueInfo |
null이 아닌 경우 이 속성이 지원되는 최솟값 또는 최댓값 또는 지원되는 값 목록을 지정하는지 여부를 표시합니다.
- 이 필드는 동적으로 지원되는 값 API인
getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange이 이 속성 ID 및 지역 ID에 지원되는지 여부를 제어합니다.
null이 아닌 경우 VHAL은 이 속성 ID와 영역 ID에 대해 이러한 API를 구현해야 합니다.
null 또는 Android 15 이하에서 이 속성 ID와 영역 ID의 동적 지원 값이 지원되지 않습니다. 클라이언트는 차량 속성 구성에 제공된 정적 지원 값 정보를 사용해야 합니다.
|
영역 유형
VehicleArea.aidl의 enum으로 정의됩니다. 지원되는 영역 유형은 아래에 나열되어 있습니다.
| 영역 유형 |
값 |
설명 |
|---|
| 전역 |
0x01000000 |
이 속성은 전역 속성이며 여러 영역이 없습니다. |
| WINDOW |
0x03000000 |
창을 기준으로 한 영역으로, VehicleAreaWindow enum을 사용합니다. |
| Mirror |
0x04000000 |
미러를 기준으로 한 영역으로, VehicleAreaMirror enum을 사용합니다. |
| SEAT |
0x05000000 |
좌석을 기준으로 한 영역으로, VehicleAreaSeat enum을 사용합니다. |
| DOOR |
0x06000000 |
도어를 기준으로 한 영역으로, VehicleAreaDoor enum을 사용합니다. |
| 휠 |
0x07000000 |
바퀴를 기준으로 한 영역으로, VehicleAreaWheel enum을 사용합니다. |
각 구역 분할 속성은 사전 정의된 영역 유형을 사용해야 합니다. 각 영역 유형에는 영역 유형의 enum에 정의된 일련의 비트 플래그가 있습니다. 예를 들어 SEAT 영역은 VehicleAreaSeat enum을 정의합니다.
ROW_1_LEFT = 0x0001
ROW_1_CENTER = 0x0002
ROW_1_RIGHT = 0x0004
ROW_2_LEFT = 0x0010
ROW_2_CENTER = 0x0020
ROW_2_RIGHT = 0x0040
ROW_3_LEFT = 0x0100
...
영역 ID
구역 분할 속성은 영역 ID를 통해 주소가 지정됩니다. 각 구역 분할 속성은 하나 이상의 영역 ID를 지원할 수 있습니다. 영역 ID는 개별 enum의 플래그 하나 이상으로 구성됩니다. 예를 들어 VehicleAreaSeat를 사용하는 속성은 다음 영역 ID를 사용할 수 있습니다.
| 항목 |
설명 |
|---|
ROW_1_LEFT | ROW_1_RIGHT |
영역 ID가 앞좌석 모두에 적용됩니다. |
ROW_2_LEFT |
왼쪽 뒷좌석에만 적용됩니다. |
ROW_2_RIGHT |
오른쪽 뒷좌석에만 적용됩니다. |
자세한 내용은 HVAC를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-12-02(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-12-02(UTC)"],[],[]]