Starting March 27, 2025, we recommend using android-latest-release instead of aosp-main to build and contribute to AOSP. For more information, see Changes to AOSP.
         
       
     
  
  
  
  
  
    
      Property configurations
    
    
      
    
    
      
      Stay organized with collections
    
    
      
      Save and categorize content based on your preferences.
    
  
  
      
    
  
  
  
  
  
    
  
  
    
    
  
  Each supported property is specified by a property configuration defined through
  VehiclePropConfig
  structure and has the following fields.
  | Field | Description | 
    | prop | The property ID. This must be either one of the defined system properties from the
        VehicleProperty.aidlor a vendor property. The property ID is constructed using bit-or of the following fields
        (right to left): 
        (0x00000000) 16 bits: A unique ID from range 0x0100 - 0xffff.(0x00000000) 8 bits: Property types which defines the type for the property.(0x00000000) 4 bits: Area types.(0x00000000) 4 bits: VehiclePropertyGroupThis is eitherSYSTEM(0x10000000) orVENDOR(0x20000000). See
          Vendor Properties
          for properties you can customize. For example,
 INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000) | 
  
    | access | 
        The access mode for the property. Must be one of READ,WRITE, orREAD_WRITE.For system properties, this must be one of the defined access modes documented in
        VehicleProperty.aidl.For properties that have per-area access, this is the maximal subset of the per-area
          access, for example, if the properties have two areas whose access is READandREAD_WRITE, this
          should be set toREAD. | 
  
    | changeMode | 
        Change mode for the property. Must be one of STATIC,ON_CHANGE, orCONTINUOUS.STATICmeans the
          property value never changes after a system boot.ON_CHANGEmeans the VHAL
          must report when the value changes.CONTINUOUSmeans the property value
          changes continuously and VHAL must report based on the subscription sample rate.For system properties, this must be equal to the change mode documented in
          VehicleProperty.aidl. | 
  
    | configArray | An optional array to contain property-specific configuration. Can be empty. For certain
      system properties, for example, GEAR_SELECTION, the config array has special meaning and
      must be specified. | 
  
    | configString | An optional string to contain property specific configuration. Can be empty. | 
  
    | minSampleRateandmaxSampleRate | The minimum and maximum supported sample rate for continuous property (in Hertz). Not used if property
      isn't continuous. minSampleRateandmaxSampleRatemust be achievable by the VHAL
      implementation. Not all sample rates between minimum and maximum have to be supported. | 
Property types
Defined as enums in VehiclePropertyType.aidl. Supported property types are
listed in the following table.
  | Property type | Value | Description | 
    | STRING | 0x00100000 | String property, uses the stringValuefield in Vehicle property value. | 
  
    | BOOLEAN | 0x00200000 | Booleanproperty, uses the first element inint32Valuesfield in
      Vehicle property value.0meansfalse,None 0meanstrue. | 
  
    | INT32 | 0x00400000 | Integerproperty, uses the first element inint32Valuesfield in
      Vehicle property value. | 
  
    | INT32_VEC | 0x00410000 | Integer[]property, uses the elements in theint32Valuesfield in
      Vehicle property value. | 
  
    | INT64 | 0x00500000 | Long property, uses the first element in int64Valuesfield in
      Vehicle property value. | 
  
    | INT64_VEC | 0x00510000 | Long[]property, uses the elements inint64Valuesfield in
      Vehicle property value. | 
  
    | FLOAT | 0x00600000 | Floatproperty, uses the first element infloatValuesfield in
      Vehicle property value. | 
  
    | FLOAT_VEC | 0x00610000 | Float[]property, uses the elements infloatValuesfield in
      Vehicle property value. | 
  
    | BYTES | 0x00700000 | byte[]property, uses the elements inbyteValuesfield in
      Vehicle property value. | 
  
    | MIXED | 0x00e00000 | Mixed type property. Any combination of scalar or vector types. The exact format must be
      provided in the config array in the property configuration. For vendor MIXED type properties, configArrayneeds to be formatted in this structure: 
          configArray[0], 1 indicates the property has aStringvalueconfigArray[1], 1 indicates the property has aBooleanvalueconfigArray[2], 1 indicates the property has anIntegervalueconfigArray[3], the number indicates the size ofInteger[]in the propertyconfigArray[4], 1 indicates the property has aLongvalueconfigArray[5], the number indicates the size ofLong[]in the propertyconfigArray[6], 1 indicates the property has aFloatvalueconfigArray[7], the number indicates the size ofFloat[]in the propertyconfigArray[8], the number indicates the size ofbyte[]in the property. For example, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}indicates the
          property has aStringvalue, aBooleanvalue, anIntegervalue, and an array with
          three integers. | 
Area ID configuration
Each property configuration also may contain a list of area ID configurations. This list is
  optional for global properties and required for zoned properties (properties with multiple
  supported areas). Each area ID configuration has the following fields.
    | Field | Description | 
      | areaId | The ID for this area. See Area IDs. | 
    
      | minInt32ValueandmaxInt32Value | 
          Optional minimum and maximum value for INT32 type properties at boot time. Must be 0
            for all other types. Ignored if both are 0.For global property, if minimum and maximum value needs to be defined, one area configuration
            with the area ID 0 must be used.This value is static and won't change even if the minimum or maximum value changes
            at runtime. Implement IVehicle#getMinMaxSupportedValuefor dynamic minimum or maximum
            value. | 
    
      | minInt64ValueandmaxInt64Value | 
          Optional minimum and maximum value for INT64 type properties at boot time. Must be 0
            for all other types. Ignored if both are 0.For global property, if minimum and maximum value needs to be defined, one area configuration
            with the area ID 0 must be used.This value is static and won't change even if the minimum or maximum value changes
            at runtime. Implement IVehicle#getMinMaxSupportedValuefor dynamic minimum or maximum
            value. | 
    
      | minFloatValueandmaxFloatValue | 
          Optional minimum and maximum value for Float type properties at boot time. Must be 0
            for all other types. Ignored if both are 0.0.For global property, if minimum and maximum value needs to be defined, one area configuration
            with the area ID 0 must be used.This value is static and won't change even if the minimum or maximum value changes
            at runtime. Implement IVehicle#getMinMaxSupportedValuefor dynamic minimum or maximum
            value. | 
    
      | (New in Android 14) 
 supportedEnumValues | 
          Optional list of supported values at boot time if the property is defined as an enum
            type property. If not specified (empty) or before Android 14, it is assumed all enum
            values are supported.For global property, if supported enum values need to be defined, one area
            configuration with the area ID 0 must be used.This value is static and won't change even if the supported values change
            at runtime. Implement IVehicle#getSupportedValuesListsfor dynamic supported
            values.This only applies for enum type properties. For other types, this field must be empty.
            To expose supported values for other non-enum types, use
            IVehicle#getSupportedValuesLists. | 
    
      | (New in Android 15) 
 supportVariableUpdateRate | 
          Whether variable update rate is supported. This applies only for continuous properties.
          If this is true, the app can enable variable update rate for a subscription to
            receive property update events only when the property value changes
            (which is treating continuous properties as on-change properties).If all subscribers for a property are enabling variable update rate, the subscription
            request to VHAL enables variable update rate for the property and VHAL must
            send property update events only when the property value changes.
          If any subscriber is requesting fixed update rate, the subscription request to VHAL
            disables variable update rate for the property and AAOS filters out the
            duplicate events for the clients that request variable update rate.
          It is HIGHLY RECOMMENDED to support variable update rate for all non-heartbeat
            continuous properties for better performance unless the property data is large (for
            example, a byte array of 1k in size) and might occupy large amount of memory for caching.
           | 
    
      | (New in Android 16) 
 hasSupportedValueInfo | 
          If not null, shows whether this property specifies minimum or maximum
            supported values or supported values list.This field controls whether the dynamic supported value APIs:
            getMinMaxSupportedValue,getSupportedValuesLists,subscribeSupportedValueChange,unsubscribeSupportedValueChangeare supported for this property ID and area ID.If not null, VHAL must implement these APIs for this
            property ID and area ID.If nullor in Android 15 or lower, dynamic supported
            values for this property ID and area ID are not supported. The client must use the
            static supported value information provided in the vehicle property configuration. | 
  
Area types
Defined as enums in VehicleArea.aidl. The supported area types are listed below.
  | Area type | Value | Description | 
    | GLOBAL | 0x01000000 | This property is a global property and does not have multiple areas. | 
  
    | WINDOW | 0x03000000 | Area based on windows, uses VehicleAreaWindowenum. | 
  
    | MIRROR | 0x04000000 | Area based on mirrors, uses VehicleAreaMirrorenum. | 
  
    | SEAT | 0x05000000 | Area based on seats, uses VehicleAreaSeatenum. | 
  
    | DOOR | 0x06000000 | Area based on doors, uses VehicleAreaDoorenum. | 
  
    | WHEEL | 0x07000000 | Area based on wheels, uses VehicleAreaWheelenum. | 
Each zoned property must use a pre-defined area type. Each area type has a set of bit flags
  defined in an enum for the area type. For example, the SEAT area defines
  VehicleAreaSeat enums:
  
    - 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
- ...
Area IDs
Zoned properties are addressed through Area IDs. Each zoned property may support one or more
  Area IDs. An Area ID consists of one or more flags from its respective enum. For example, a
  property using VehicleAreaSeat might use the following Area IDs:
  | Item | Description | 
    | ROW_1_LEFT | ROW_1_RIGHT | The Area ID applies to both front seats. | 
  
    | ROW_2_LEFT | Applies only to the rear left seat. | 
    ROW_2_RIGHT | Applies only to the rear right seat. | 
To learn more, see HVAC.
  
  
 
  
    
    
      
    
    
  
       
    
    
  
  
  Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
  Last updated 2025-10-09 UTC.
  
  
  
    
      [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-10-09 UTC."],[],[]]