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 |
Long 속성으로, 차량 속성 값의 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 유형 속성에만 적용됩니다. 다른 유형의 경우 이 필드는 비워야 합니다.
enum이 아닌 다른 유형에 지원되는 값을 노출하려면
IVehicle#getSupportedValuesLists 를 사용하세요.
|
(Android 15의 새로운 기능)
supportVariableUpdateRate |
- 가변 업데이트 빈도가 지원되는지 여부입니다. 연속 속성에만 적용됩니다.
true 인 경우 앱은 속성 값이 변경될 때만 속성 업데이트 이벤트를 수신하도록 정기 결제의 가변 업데이트 속도를 사용 설정할 수 있습니다(연속 속성을 변경 시 속성으로 취급).
- 속성의 모든 구독자가 가변 업데이트 빈도를 사용 설정하는 경우 VHAL에 대한 구독 요청은 속성의 가변 업데이트 빈도를 사용 설정하며 VHAL은 속성 값이 변경될 때만 속성 업데이트 이벤트를 전송해야 합니다.
- 정기 업데이트 빈도를 요청하는 구독자가 있는 경우 VHAL에 대한 구독 요청으로 인해 속성의 가변 업데이트 빈도가 사용 중지되고 AAOS는 가변 업데이트 빈도를 요청하는 클라이언트의 중복 이벤트를 필터링합니다.
- 속성 데이터가 크거나 (예: 크기가 1, 000인 바이트 배열) 캐싱을 위해 많은 메모리를 차지할 수 있는 경우가 아니라면 성능 향상을 위해 모든 비하트비트 연속 속성에 가변 업데이트 비율을 지원하는 것이 좋습니다.
|
(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을 사용합니다. |
WHEEL |
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-06-12(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-06-12(UTC)"],[],[]]