พร็อพเพอร์ตี้ของผู้ให้บริการ
VHAL อนุญาตให้มีพร็อพเพอร์ตี้ของผู้ให้บริการที่มีการเข้าถึงเพื่อรองรับความต้องการเฉพาะพาร์ทเนอร์ ผ่าน API ของระบบเท่านั้น ใช้หลักเกณฑ์ต่อไปนี้เมื่อทำงานกับที่พักของผู้ให้บริการ
- พยายามใช้พร็อพเพอร์ตี้ของระบบก่อนเสมอ ควรใช้พร็อพเพอร์ตี้ของผู้ให้บริการเป็นทางเลือกสุดท้าย เมื่อไม่มีพร็อพเพอร์ตี้ของระบบใดที่ตรงกับความต้องการของคุณ
- คุณต้องไม่ใช้พร็อพเพอร์ตี้ของผู้ให้บริการเพื่อจำลองพร็อพเพอร์ตี้ยานพาหนะที่อยู่แล้วใน VehiclePropertyIds ของ SDK เพื่อป้องกันไม่ให้ระบบนิเวศแตกแยก หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ 2.5, ข้อกำหนดด้านยานยนต์ใน CDD
- ใช้ช่องต่อไปนี้เพื่อสร้างรหัสพร็อพเพอร์ตี้
VehiclePropertyGroup:VENDOR
กลุ่มผู้ให้บริการใช้สำหรับพร็อพเพอร์ตี้ของผู้ให้บริการเท่านั้นVehicleArea
เลือกประเภทพื้นที่ที่เหมาะสมVehiclePropertyType
เลือกประเภทข้อมูลที่เหมาะสม ประเภท BYTES อนุญาตให้ส่งข้อมูลดิบ ซึ่งเพียงพอแล้วในเกือบทุกกรณี การส่งข้อมูลขนาดใหญ่บ่อยครั้งผ่านพร็อพเพอร์ตี้ของผู้ให้บริการอาจทำให้การเข้าถึงเครือข่ายของยานพาหนะทั้งหมดช้าลง โปรดระมัดระวังเมื่อเพิ่มเพย์โหลดขนาดใหญ่Property ID
เลือกรหัส 2 ไบต์ที่ไม่ซ้ำกันสำหรับพร็อพเพอร์ตี้ของผู้ให้บริการ เช่น 0x1234
- กรอก
VehiclePropConfig.configString
ด้วยคำอธิบายสั้นๆ เกี่ยวกับผู้ให้บริการ วิธีนี้จะช่วยให้เครื่องมือตรวจสอบความถูกต้องแจ้งการทำสำเนาโดยไม่ตั้งใจของ ยานพาหนะ เช่น "พร็อพเพอร์ตี้ที่กําหนดเองของฉันสําหรับ XYZ" - เข้าถึงผ่าน CarPropertyManager (สําหรับคอมโพเนนต์ Java) หรือผ่าน
libvhalclient
(สําหรับเนทีฟ) ควรทำ ไม่ดัดแปลง API ของรถยนต์อื่นๆ เพราะการทำเช่นนี้อาจทำให้เกิดปัญหาความเข้ากันได้ในอนาคต
สิทธิ์สำหรับพร็อพเพอร์ตี้ผู้ให้บริการ
สิทธิ์เริ่มต้นสำหรับพร็อพเพอร์ตี้ของผู้ให้บริการที่กําหนดคือ
android.car.Car.PERMISSION_VENDOR_EXTENSION
หากต้องการควบคุมสิทธิ์อย่างละเอียดยิ่งขึ้น ให้รองรับพร็อพเพอร์ตี้ SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
พร็อพเพอร์ตี้ STATIC นี้เป็นแบบอ่านอย่างเดียว โดยอาร์เรย์ config จะระบุสิทธิ์สำหรับพร็อพเพอร์ตี้ของผู้ให้บริการ
configArray
ได้รับการตั้งค่าดังนี้ (i คือจํานวนเต็มเริ่มต้นจาก 0)
configArray[3 * i]
propId รหัสพร็อพเพอร์ตี้สำหรับพร็อพเพอร์ตี้ของผู้ให้บริการconfigArray[3 * i + 1]
Enum ในVehicleVendorPermission.aidl
เพื่อบ่งบอกสิทธิ์ในการอ่านค่าพร็อพเพอร์ตี้configArray[3 * i + 2]
Enum ในVehicleVendorPermission.aidl
เพื่อบ่งบอกสิทธิ์ในการเขียนค่าพร็อพเพอร์ตี้
ตัวอย่างเช่น อาร์เรย์การกําหนดค่าต่อไปนี้กําหนดค่าพร็อพเพอร์ตี้ผู้ให้บริการ 2 รายการ นั่นคือ 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เบาะและพวงมาลัย
โปรดดูคุณสมบัติของที่นั่งและพวงมาลัย
ระบบปรับอากาศ (HVAC)
คุณสามารถใช้ VHAL เพื่อควบคุม HVAC ได้โดยการตั้งค่าพร็อพเพอร์ตี้ที่เกี่ยวข้องกับ HVAC พร็อพเพอร์ตี้ระบบปรับอากาศ (HVAC) ส่วนใหญ่ มีความเกี่ยวข้องกับพื้นที่หนึ่งๆ ในรถ แต่ก็มีหลายแห่งที่เป็นทรัพย์สินสากล ตัวอย่างพร็อพเพอร์ตี้ที่กําหนดมีดังนี้
พร็อพเพอร์ตี้ | วัตถุประสงค์ |
---|---|
HVAC_TEMPERATURE_SET |
ตั้งอุณหภูมิตามรหัสพื้นที่ |
HVAC_POWER_ON |
สถานะพลังงานของระบบ HVAC ต่อรหัสพื้นที่ |
สำหรับที่พักที่มีระบบปรับอากาศ (HVAC) ซึ่งขึ้นอยู่กับสถานะการจ่ายไฟของระบบปรับอากาศ ที่พักต้องแสดงอยู่ในHVAC_POWER_ON
อาร์เรย์ config หากต้องการดูรายการพร็อพเพอร์ตี้ HVAC ทั้งหมด
ค้นหา HVAC_*
ใน VehicleProperty.aidl
ดู
คุณสมบัติของระบบที่รองรับ
พร็อพเพอร์ตี้
กฎสำหรับการแมปพร็อพเพอร์ตี้ HVAC ประเภท VehicleArea ที่ไม่ใช่ GLOBAL กับรหัสพื้นที่มีดังนี้
"พื้นที่" ทั้งหมดสำหรับ VehicleArea
ประเภทหนึ่งๆ ที่ได้รับผลกระทบจากพร็อพเพอร์ตี้นั้นต้องรวมอยู่ในรหัสพื้นที่ของพร็อพเพอร์ตี้นั้น ตัวควบคุมอุณหภูมิจะกำหนดให้กับที่นั่งที่ "มีอิทธิพลมากที่สุด" แต่ต้องรวมที่นั่งทุกที่นั่งที่ได้รับผลกระทบเพียงครั้งเดียว
การกำหนดที่นั่งด้านหลังกลาง
ด้านซ้ายหรือขวาของ AreaID อาจดูไม่มีก็ได้
แต่การรวม 1 ที่นั่งที่ได้รับผลกระทบไว้ใน AreaID 1 ชุด จะช่วยให้มั่นใจว่าที่นั่ง
ในรถก็จะแสดงไว้ และบอกว่าผลกระทบต่อแต่ละที่นั่งนั้นก็สมเหตุสมผล
ตัวอย่างที่ 1
รถมี 2 ที่นั่งด้านหน้า (ROW_1_LEFT, ROW_1_RIGHT) และ 3 ที่นั่งหลัง
(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) มีตัวควบคุมอุณหภูมิ 2 เครื่อง แบบชิ้นละ 1 ชิ้น
ฝั่งคนขับและฝั่งผู้โดยสาร ชุดการแมป AreaID ที่ถูกต้องสําหรับ HVAC_TEMPERATURE_SET
จะเป็นอาร์เรย์ 2 องค์ประกอบ ดังนี้
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
การแมปทางเลือกสําหรับการกําหนดค่าฮาร์ดแวร์เดียวกันจะเป็นดังนี้
- ROW_1_LEFT | ROW_2_CENTER | แถวที่ 2_ซ้าย
- ROW_1_RIGHT | แถวที่ 2 ขวา
ตัวอย่างที่ 2
รถมี 3 แถวที่นั่ง โดยแถวหน้ามี 2 ที่นั่ง (ROW_1_LEFT, ROW_1_RIGHT) และแถวที่ 2 (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) และแถวที่ 3 (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT) มี 3 ที่นั่ง มีตัวควบคุมอุณหภูมิ 3 ตัว ได้แก่ ฝั่งคนขับ ฝั่งผู้โดยสาร และด้านหลัง วิธีที่เหมาะสมในการทำแผนที่
HVAC_TEMPERATURE_SET
ถึง AreaIDs คืออาร์เรย์องค์ประกอบ 3 แบบดังนี้
- ROW_1_LEFT
- แถวที่ 1 ด้านขวา
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
ตัวอย่างที่ 3
รถมี 2 ที่นั่งด้านหน้า (ROW_1_LEFT, ROW_1_RIGHT) และ 3 ที่นั่งหลัง (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) สมมติว่ารถรองรับ HVAC_AUTO_ON สำหรับเบาะหน้า 2 ที่นั่งเท่านั้น ชุดการแมป AreaID ที่ถูกต้องสําหรับ HVAC_AUTO_ON จะเป็นอาร์เรย์องค์ประกอบเดียว ดังนี้
- ROW_1_LEFT | แถวที่ 1 ด้านขวา
หาก HVAC_AUTO_ON
มีหน่วยควบคุม 2 เครื่องสำหรับฝั่งคนขับและผู้โดยสาร
การแมปทางเลือกจะเป็นอาร์เรย์องค์ประกอบ 2 รายการดังนี้
- ROW_1_LEFT
- แถวที่ 1 ด้านขวา
INFO_EXTERIOR_DIMENSIONS
ขนาดภายนอกของยานพาหนะจะวัดเป็นมิลลิเมตรดังที่แสดงในรูปที่ 1


ใช้พร็อพเพอร์ตี้ที่อธิบายในตารางนี้เพื่อกำหนดขนาดภายนอกของยานพาหนะ
พร็อพเพอร์ตี้ของยานพาหนะ | ฟิลด์ VHAL | คำอธิบาย |
---|---|---|
ส่วนสูง | int32Values[0] |
ระยะห่างในแนวตั้งระหว่างพื้นดินและจุดสูงสุดบนยานพาหนะ วิธีนี้สันนิษฐาน ปกติล้อโรงงานที่เป่าลม |
ความยาว | int32Values[1] |
ระยะห่างในแนวนอนระหว่างจุดด้านนอกสุดของด้านหน้าและด้านหลังของยานพาหนะ |
ความกว้างโดยไม่รวมกระจก | int32Values[2] |
ระยะห่างแนวนอนระหว่างจุดนอกสุด 2 จุดในแต่ละด้านของยานพาหนะ โดยไม่รวม กระจกข้าง |
ความกว้างรวมถึงกระจก | int32Values[3] |
ระยะห่างในแนวนอนระหว่างจุดที่ยื่นออกมาด้านนอกสุด 2 จุดในแต่ละด้านของยานพาหนะ ซึ่งรวมถึงกระจกมองข้าง |
ฐานล้อ | int32Values[4] |
ระยะห่างระหว่างศูนย์กลางของยานพาหนะที่ล้อหน้าและล้อหลัง |
ความกว้างของแทร็กด้านหน้า | int32Values[5] |
ระยะห่างระหว่างล้อหน้า ซึ่งวัดจากเส้นกึ่งกลางของดอกยางล้อหนึ่งไปยังเส้นกึ่งกลางของดอกยางล้ออีกข้าง |
ความกว้างของร่องล้อหลัง | int32Values[6] |
ระยะห่างระหว่างล้อหลังซึ่งวัดจากเส้นกึ่งกลางของยางล้อหนึ่งถึง เส้นกึ่งกลางของยางล้อหน้าตรงกัน |
เส้นผ่านศูนย์กลางสำหรับวงล้อ | int32Values[7] |
เส้นผ่านศูนย์กลางของวงกลมที่มาจากล้อด้านนอกของยานพาหนะเมื่อเลี้ยวที่สมบูรณ์ ด้วยพวงมาลัยที่ล็อกไว้แน่นหนา |
การปฏิบัติตามกฎระเบียบด้านความปลอดภัยทั่วไปของสหภาพยุโรป
หากยานพาหนะต้องเป็นไปตามข้อกำหนดของกฎระเบียบให้ความคุ้มครองข้อมูลส่วนบุคคลของผู้บริโภค (GSR) ของสหภาพยุโรปผ่าน Android จะต้องรองรับพร็อพเพอร์ตี้ GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
ตัวอย่าง Use Case คือ GSR-ISA (Intelligent Speed Assist) ตามที่กำหนดไว้ในกฎระเบียบของสหภาพยุโรป 2019/2144 ระบบจะเพิ่มพร็อพเพอร์ตี้นี้ใน AIDL VHAL จาก Android 13 แต่รองรับในบริการรถยนต์ตั้งแต่การเปิดตัว Android 12 พร็อพเพอร์ตี้นี้ได้รับการกำหนดให้เป็นแบบอ่านอย่างเดียว
พร็อพเพอร์ตี้จำนวนเต็มทั่วโลกแบบคงที่ โดยมีค่าที่เป็นไปได้ตามที่กำหนดโดย
enum ของ GsrComplianceRequirementType
:
ชื่อ | ค่า | คำอธิบาย |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | ไม่ต้องปฏิบัติตามข้อกำหนด GSR |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | ต้องปฏิบัติตามข้อกำหนด GSR และเวอร์ชันโซลูชันข้อกำหนดคือ 1 |
ผู้ให้บริการต้องฮาร์ดโค้ดรหัสพร็อพเพอร์ตี้เพื่อรองรับพร็อพเพอร์ตี้นี้ใน HIDL VHAL (ใน Android 12)
ตัวอย่างเช่น ตัวอย่างต่อไปนี้แสดงให้เห็นว่า HIDL อ้างอิงมีการรองรับอย่างไร
VHAL
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
และ enum จาก 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
เป็นรหัสพร็อพเพอร์ตี้ - ใน Android 12 ให้ใช้ค่าฮาร์ดโค้ด 0x11400F47 เป็นรหัสพร็อพเพอร์ตี้ พร็อพเพอร์ตี้นี้ต้องมีสิทธิ์
Car#PERMISSION_CAR_INFO