自 2025 年 3 月 27 日起,我們建議您使用 android-latest-release 而非 aosp-main 建構及貢獻 AOSP。詳情請參閱「Android 開放原始碼計畫變更」。
  
         
       
     
  
  
  
    
  
  
  
    
      資源設定
    
    
      
    
    
      
      透過集合功能整理內容
    
    
      
      你可以依據偏好儲存及分類內容。
    
  
  
      
    
  
  
  
  
  
    
  
  
    
    
    
  
  每個支援的屬性都是由透過 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 | 連續屬性支援的最小和最大取樣率 (以赫茲為單位)。如果房源並非連續出租,則不適用。VHAL 實作項目必須能夠達成 minSampleRate和maxSampleRate。不一定要支援介於最小值和最大值之間的所有取樣率。 | 
物業類型
在 VehiclePropertyType.aidl 中定義為列舉。下表列出支援的屬性類型。
  | 資源類型 | 值 | 說明 | 
|---|
    | STRING | 0x00100000 | 字串屬性,使用「車輛屬性值」中的 stringValue欄位。 | 
  
    | BOOLEAN | 0x00200000 | 屬性,並使用「車輛屬性值」中「 int32Values」欄位的第一個元素。Boolean0代表false,None 0代表true。 | 
  
    | INT32 | 0x00400000 | 屬性,並使用「車輛屬性值」中「 int32Values」欄位的第一個元素。Integer | 
  
    | INT32_VEC | 0x00410000 | Integer[]屬性,並使用「車輛屬性值」中的int32Values欄位元素。 | 
  
    | INT64 | 0x00500000 | 長屬性,使用「車輛屬性值」中 int64Values欄位的第一個元素。 | 
  
    | INT64_VEC | 0x00510000 | Long[]屬性,並使用「車輛屬性值」中的int64Values欄位元素。 | 
  
    | FLOAT | 0x00600000 | 屬性,並使用「車輛屬性值」中「 floatValues」欄位的第一個元素。Float | 
  
    | 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值,以及包含三個整數的陣列。 | 
設定區域 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 | 
          如果屬性定義為列舉類型屬性,則為開機時支援的值清單 (選用)。如果未指定 (空白) 或在 Android 14 之前,系統會假設支援所有列舉值。如果是全域屬性,如需定義支援的列舉值,則必須使用區域 ID 為 0 的區域設定。這個值是靜態值,即使支援的值在執行階段有所變更,這個值也不會變動。導入 IVehicle#getSupportedValuesLists,支援動態值。這項功能僅適用於列舉類型屬性。如果是其他類型,這個欄位必須留空。
            如要公開其他非列舉型別的支援值,請使用 IVehicle#getSupportedValuesLists。 | 
    
      | (Android 15 的新功能) 
 supportVariableUpdateRate | 
          是否支援可變更新率。這項功能僅適用於連續型屬性。
          如果是 true,應用程式可以為訂閱項目啟用變數更新率,只在屬性值變更時接收屬性更新事件 (也就是將連續屬性視為變更屬性)。如果屬性的所有訂閱者都啟用變數更新率,則對 VHAL 的訂閱要求會為屬性啟用變數更新率,且 VHAL 必須只在屬性值變更時傳送屬性更新事件。如有任何訂閱者要求固定更新率,對 VHAL 的訂閱要求會停用屬性的可變更新率,且 AAOS 會為要求可變更新率的用戶端篩除重複事件。強烈建議支援所有非心跳連續屬性的變數更新率,以提升效能,除非屬性資料量很大 (例如大小為 1k 的位元組陣列),可能會佔用大量記憶體來快取。 | 
    
      | (Android 16 的新功能) 
 hasSupportedValueInfo | 
          如果不是 null,則會顯示這個屬性是否指定支援的最小值或最大值,或是支援的值清單。這個欄位會控管這個資源 ID 和區域 ID 是否支援動態支援值 API:
            getMinMaxSupportedValue、getSupportedValuesLists、subscribeSupportedValueChange、unsubscribeSupportedValueChange如果不是 null,VHAL 必須為這個資源 ID 和區域 ID 實作這些 API。如果 null或 Android 15 以下版本不支援這項屬性 ID 和區域 ID 的動態支援值,用戶端必須使用車輛屬性設定中提供的靜態支援值資訊。 | 
  
區域類型
在 VehicleArea.aidl 中定義為列舉。支援的區域類型如下。
  | 區域類型 | 值 | 說明 | 
|---|
    | 全球 | 0x01000000 | 這項資源是全域資源,沒有多個區域。 | 
  
    | WINDOW | 0x03000000 | 以視窗為準的區域,使用 VehicleAreaWindow列舉。 | 
  
    | 《Mirror》 | 0x04000000 | 根據鏡像的區域,使用 VehicleAreaMirror列舉。 | 
  
    | SEAT | 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。區域 ID 由其各自列舉中的一或多個旗標組成。舉例來說,使用 VehicleAreaSeat 的屬性可能會使用下列區域 ID:
  | 產品 | 說明 | 
|---|
    | ROW_1_LEFT | ROW_1_RIGHT | 區域 ID 適用於前座。 | 
  
    | ROW_2_LEFT | 僅適用於左後座。 | 
    | ROW_2_RIGHT | 僅適用於後座右側座位。 | 
詳情請參閱「HVAC」。
  
  
  
 
  
    
    
      
    
    
  
       
    
    
  
  
  這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
  上次更新時間:2025-10-10 (世界標準時間)。
  
  
  
    
      [[["容易理解","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 (世界標準時間)。"],[],[]]