供應商資源
為支援特定合作夥伴的需求,VHAL 允許存取 只能透過系統 API 取得使用供應商資源時,請遵循下列規範:
- 一律先嘗試使用系統屬性,在不得已的情況下使用供應商資源 如果沒有系統資源符合您的需求,
- 為避免生態系統零散,不得使用供應商屬性來複製車輛 SDK 中已存在的資源 VehiclePropertyIds (車輛屬性 ID)。 詳情請參閱章節 2.5 和 CDD 中的汽車相關規定。
- 請使用下列欄位產生資源 ID:
VehiclePropertyGroup:VENDOR
VENDOR 群組僅適用於供應商資源。VehicleArea
選取適當的區域類型。VehiclePropertyType
請選取合適的資料類型。BYTES 類型允許傳遞原始資料 這在大多數情況下就已足夠透過供應商屬性經常傳送大數據 可能會降低整個車輛網路的存取速度新增大量酬載時,請務必謹慎。Property ID
為供應商資源選擇不重複的雙位元組 ID。例如 0x1234。
- 填寫
VehiclePropConfig.configString
,並輸入供應商的簡短說明 資源。這可讓有效性檢查工具能標記意外複製現有的項目 車輛屬性例如「我的 XYZ 自訂屬性」。 - 存取管道
CarPropertyManager
(適用於 Java 元件) 或透過
libvhalclient
(適用於原生)。正確做法 不得修改其他 Car API,以免日後發生相容性問題。
供應商資源權限
所有已定義的供應商資源預設權限為
android.car.Car.PERMISSION_VENDOR_EXTENSION
。以更精細的方式授予相關權限
控制項,支援 SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
屬性。這張統計資料
屬性是唯讀狀態,且其中的設定陣列會指定供應商資源的權限。
configArray
設定如下 (i 是從 0 開始的整數):
configArray[3 * i]
propId:供應商資源的資源 ID。configArray[3 * i + 1]
VehicleVendorPermission.aidl
中的列舉到 表示讀取屬性值的權限。configArray[3 * i + 2]
VehicleVendorPermission.aidl
中的列舉到 表示寫入屬性值的權限。
舉例來說,下列設定陣列會設定兩個供應商屬性:
vendor_prop_1
和 vendor_prop_2
都具備下列權限:
vendor_prop_1
要求android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
閱讀、android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
以便寫入。vendor_prop-2
要求android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
無法讀取,無法針對 Android 應用程式寫入。
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
不在這個陣列中的供應商資源會取得預設的供應商權限。時間
已選取 PERMISSION_NOT_ACCESSIBLE
,Android 應用程式將無法存取資源。
在這個範例中,Android 應用程式無法寫入 vendor_prop_2
的值。僅限原生
VHAL 用戶端可以寫入這個屬性。
進階駕駛輔助系統 (ADAS)
請參閱 ADAS 車輛屬性。SEAT 和 STEERING
請參閱座椅和方向盤屬性。
空調
你可透過設定空調相關的屬性,使用 VHAL 控制空調。多數空調房源 屬性與車輛的特定區域有關,但有幾個是全球屬性。 定義的屬性範例包括:
資源 | 目的 |
---|---|
HVAC_TEMPERATURE_SET |
為每個區域 ID 設定溫度。 |
HVAC_POWER_ON |
每個區域 ID 的空調系統電源狀態。 |
如果是仰賴空調系統電源狀態的空調設備,必須
列在 HVAC_POWER_ON
設定陣列中。如要查看空調屬性的完整清單,
在 VehicleProperty.aidl
搜尋 HVAC_*
,請參閱
支援的系統屬性。
資源。
將非全球 VehicleArea 類型 HVAC 屬性對應至 AreaID 的規則:
受資源影響的特定 VehicleArea
類型的每個「區域」,都必須是
加入該房源的區域 ID溫度控制器會指派給
「最具影響力」的席次但每個受影響的席位必須恰好提供一次。
將中位的中心座位指派給左側或右側 AreaID 可能並不固定,
但只在一個 AreaID 中加入每個受影響的席位
以合理的方式調整每個座位。
示例 1
一輛車有兩個前座 (ROW_1_LEFT、ROW_1_RIGHT) 和三個後座
(ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT)。溫度控制單位有兩個,分別
駕駛側和副駕駛側一組有效的 AreaID 對應組
HVAC_TEMPERATURE_SET
會是兩個元素陣列:
- ROW_1_LEFT |ROW_2_左
- ROW_1_RIGHT |ROW_2_CENTER |ROW_2_RIGHT
同一硬體設定的替代對應如下:
- ROW_1_LEFT |ROW_2_CENTER |ROW_2_左
- ROW_1_RIGHT |ROW_2_RIGHT
示例 2
一輛車的前排有兩個座位 (ROW_1_LEFT、ROW_1_RIGHT)
第二列 (ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT) 和第三列
(ROW_3_LEFT、ROW_3_CENTER、ROW_3_RIGHT)。溫度控制單位有三個,分別
駕駛側、乘客側和後方。適合繪製地圖的方式
HVAC_TEMPERATURE_SET
到 AreaIDs 是三個元素陣列:
- 剩餘 ROW_1_
- ROW_1_RIGHT
- ROW_2_LEFT |ROW_2_CENTER |ROW_2_RIGHT |ROW_3_LEFT |ROW_3_CENTER |ROW_3_RIGHT
示例 3
一輛車有兩個前座 (ROW_1_LEFT、ROW_1_RIGHT) 和三個後座 (ROW_2_LEFT、ROW_2_CENTER、ROW_2_RIGHT)。假設車輛僅支援 HVAC_AUTO_ON 前 20,000 個工作HVAC_AUTO_ON 的有效 AreaID 組合應為單一 元素陣列:
- ROW_1_LEFT |ROW_1_RIGHT
如果 HVAC_AUTO_ON
有駕駛側和乘客兩個不同的控制單位
替代對應會是兩個元素陣列:
- 剩餘 ROW_1_
- ROW_1_RIGHT
INFO_EXTERIOR_DIMENSIONS
車輛外部尺寸以公釐為單位,如圖 1 所示。
![](https://source.android.google.cn/static/docs/automotive/images/vhal-info-exterior-dimension.png?authuser=19&hl=zh-tw)
![](https://source.android.google.cn/static/docs/automotive/images/vhal-info-exterior-dimension-02.png?authuser=19&hl=zh-tw)
請使用下表說明的屬性定義車輛外觀 維度。
車輛屬性 | VHAL 欄位 | 說明 |
---|---|---|
身高 | int32Values[0] |
地面與車輛上最高點之間的垂直距離。這項假設 通常遭膨脹的工廠輪轉 |
長度 | int32Values[1] |
車輛正面和背面最外點之間的水平距離。 |
寬度,不含鏡子 | int32Values[2] |
車輛兩側兩個最外點之間的水平距離 (不包括在內) 兩側的鏡子 |
寬度,包括鏡子 | int32Values[3] |
車輛兩側兩個最外點之間的水平距離, 包括側邊鏡子 |
車輪底座 | int32Values[4] |
車輛前輪中心與後輪之間的距離。 |
音軌寬度 (前方) | int32Values[5] |
從一輪胎的中心線到 就讀輪胎的中心線。 |
後方軌道寬度 | int32Values[6] |
後輪的距離,從一條輪胎的中心線測量到 就讀輪胎的中心線。 |
路緣至路緣的直徑 | int32Values[7] |
車輛外輪在行駛完整方向時繪製的圓形直徑 以及全鎖的方向盤 |
歐盟一般安全法規遵循
車輛是否遵守歐盟《一般安全規則》(GSR) 規定
透過 Android 存取時,GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
必須
。其中一個用途範例為 GSR-ISA (智慧型速限輔助功能),如歐盟地區所定義的 GSR-ISA
2019/2144 法規。此屬性是從 Android 13 的 AIDL VHAL 新增,然而
自 Android 12 推出以來,車資皆支援。此屬性定義為唯讀
靜態全域整數屬性,可能的值是由
GsrComplianceRequirementType
列舉:
名稱 | 值 | 說明 |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | 不必符合 GSR 規定 |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | 必須遵守 GSR 法規遵循要求,且要求解決方案版本為 1。 |
如要在 HIDL VHAL (Android 12 中) 支援這個屬性,供應商必須以硬式編碼的方式寫入資源 ID。
例如,下列程式碼片段說明參照 HIDL 如何支援此機制
鹽
DefaultConfig.h
:
{ .config = { // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT .prop = 0x11400F47, .access = VehiclePropertyAccess::READ, .changeMode = VehiclePropertyChangeMode::STATIC, }, // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1 .initialValue = {.int32Values = {1}}, }
如要在 AIDL VHAL (Android 13 版本) 支援這個屬性,供應商可以使用
VehicleProperty.h
以及 GsrComplianceRequirementType.h
的列舉。適用對象
例如,在參考 AIDL VHAL 時
DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
如要從 Android 應用程式讀取這個屬性,請使用
CarPropertyManager.getIntProperty
。
- 如果是 Android 13 以上版本,請使用
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
敬上 做為資源 ID - 在 Android 12 中,請使用 0x11400F47 的硬式編碼值做為屬性 ID。這個
資源:
Car#PERMISSION_CAR_INFO
。