2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
속성 구성
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
지원되는 각 속성은 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-10-10(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-10-10(UTC)"],[],[]]