資源設定

每個支援的屬性都會透過 VehiclePropConfig 結構定義的屬性設定指定,並具有下列欄位。

欄位 說明
prop

房源 ID。這必須是「支援的系統屬性」中定義的系統屬性之一,或供應商屬性。系統會使用下列欄位的位元或運算來建構資源 ID (從右至左):

  • (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 資源的存取模式。必須是 READWRITEREAD_WRITE 之一。這個值必須與「支援的系統屬性」中定義的存取模式相同。
changeMode
  • 變更資源的模式。必須是 STATICON_CHANGECONTINUOUS 之一。STATIC 表示系統啟動後,屬性值永遠不會變更。ON_CHANGE 表示 VHAL 必須在值變更時回報。CONTINUOUS 表示屬性值會持續變更,且 VHAL 必須根據訂閱取樣率回報。
  • 變更模式必須與 支援的系統屬性中定義的變更模式相同。
configArray 選用陣列,用於包含屬性專屬設定。可留空。
configString 選用字串,用於包含屬性專屬設定。可留空。
minSampleRatemaxSampleRate

連續屬性支援的最低和最高取樣率。如果屬性不是連續的,則不會使用。

資源類型

VehiclePropertyType.aidl 中定義為列舉。支援的屬性類型請見下表。

資源類型 說明
STRING 0x00100000 字串屬性,會使用 Vehicle Property Value 中的 stringValue 欄位。
BOOLEAN 0x00200000 布林值屬性,會使用 車輛屬性值int32Values 欄位的首個元素。0 代表 falseNone 0 代表 true
INT32 0x00400000 整數屬性,會使用車輛屬性值int32Values 欄位的第一個元素。
INT32_VEC 0x00410000 Integer[] 屬性,會使用車輛屬性值int32Values 欄位的元素。
INT64 0x00500000 Long 屬性,會使用 Vehicle 屬性值int64Values 欄位的第一個元素。
INT64_VEC 0x00510000 Long[] 屬性會使用車輛屬性值中的 int64Values 欄位元素。
FLOAT 0x00600000 浮點屬性,會使用 車輛屬性值floatValues 欄位的第一個元素。
FLOAT_VEC 0x00610000 Float[] 屬性,會使用 Vehicle 屬性值中的 floatValues 欄位元素。
BYTES 0x00700000 byte[] 屬性,會使用 Vehicle 屬性值 中的 byteValues 欄位元素。
混合 0x00e00000 混合型屬性。純量或向量類型的任意組合。請務必在屬性設定中的設定陣列中提供確切的格式。

針對供應商 MIXED 類型屬性,configArray 的格式必須符合以下結構:

  • configArray[0],1 表示屬性具有字串值
  • configArray[1],1 表示屬性具有布林值
  • configArray[2],1 表示屬性具有整數值
  • configArray[3],這個數字代表屬性中 Integer[] 的大小
  • configArray[4],1 表示屬性具有 Long 值
  • configArray[5],這個數字代表屬性中 Long[] 的大小
  • configArray[6],1 表示屬性具有浮點值
  • configArray[7],這個數字代表屬性中 Float[] 的大小
  • configArray[8],這個數字代表屬性中 byte[] 的大小。

舉例來說,configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} 表示屬性含有字串值、布林值、整數值,以及包含三個整數的陣列。

區域 ID 設定

每項資源設定也可能包含區域 ID 設定清單。這個清單是全球資源的選用項目,也是區域資源 (支援多個區域的資源) 的必要項目。每個區域 ID 設定都包含下列欄位。

欄位 說明
areaId 這個區域的 ID。請參閱「區域 ID」。
minInt32ValuemaxInt32Value
  • INT32 類型屬性的選用最小值和最大值。系統會忽略所有其他類型。如果兩者皆為 0,則會遭到忽略。
  • 針對全域資源,如果需要定義最小值和最大值,則必須使用區域 ID 為 0 的區域設定。
minInt64ValuemaxInt64Value
  • INT64 類型屬性的選用最小值和最大值。系統會忽略所有其他類型。如果兩者皆為 0,則會遭到忽略。
  • 針對全域資源,如果需要定義最小值和最大值,則必須使用區域 ID 為 0 的區域設定。
minFloatValuemaxFloatValue
  • 浮點型屬性的選用最小值和最大值。系統會忽略所有其他類型。如果兩者皆為 0.0,則會遭到忽略。
  • 針對全域資源,如果需要定義最小值和最大值,則必須使用區域 ID 為 0 的區域設定。
(Android 14 的新功能)
supportedEnumValues
  • 如果屬性定義為列舉型屬性,則為選用的支援值清單。如果未指定 (空白) 或在 Android 14 之前,系統會假設支援所有列舉值。
  • 針對全域資源,如果需要定義支援的列舉值,則必須使用一個區域 ID 為 0 的區域設定。

區域類型

VehicleArea.aidl 中定義為列舉。以下列出支援的區域類型。

區域類型 說明
全球 0x01000000 這項資源是全域資源,沒有多個區域。
WINDOW 0x03000000 以視窗為基礎的區域,使用 VehicleAreaWindow 列舉。
《Mirror》 0x04000000 以鏡像為基礎的區域,使用 VehicleAreaMirror 列舉。
喜悅 0x05000000 以座位為準的區域,使用 VehicleAreaSeat 列舉。
0x06000000 以門為依據的區域,使用 VehicleAreaDoor 列舉。
WHEEL 0x07000000 以輪為單位的面積,使用 VehicleAreaWheel 列舉。

每個區域屬性都必須使用預先定義的區域類型。每個區域類型都有一組位元標記,這些標記是在區域類型的列舉中定義。例如,SEAT 區域定義了 VehicleAreaSeat 列舉:

  • 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。Area ID 包含一或多個相應列舉的標記。舉例來說,使用 VehicleAreaSeat 的資源可能會使用以下區域 ID:

產品 說明
ROW_1_LEFT | ROW_1_RIGHT 區域 ID 適用於兩個前座。
ROW_2_LEFT 僅適用於後座左側。
ROW_2_RIGHT 僅適用於後座右側座椅。

詳情請參閱「空調」一文。