ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
การกําหนดค่าพร็อพเพอร์ตี้
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
พร็อพเพอร์ตี้ที่รองรับแต่ละรายการจะระบุด้วยการกําหนดค่าพร็อพเพอร์ตี้ที่กําหนดผ่านโครงสร้าง VehiclePropConfig
และจะมีช่องต่อไปนี้
ช่อง |
คำอธิบาย |
---|
prop |
รหัสพร็อพเพอร์ตี้ ซึ่งต้องเป็นพร็อพเพอร์ตี้ระบบที่กําหนดไว้อย่างใดอย่างหนึ่งจาก VehicleProperty.aidl หรือพร็อพเพอร์ตี้ของผู้ให้บริการ รหัสพร็อพเพอร์ตี้สร้างขึ้นโดยใช้การรวมบิตของช่องต่อไปนี้ (จากขวาไปซ้าย)
- (0x00000000) 16 บิต: รหัสที่ไม่ซ้ำกันจากช่วง 0x0100 - 0xffff
- (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
- สำหรับพร็อพเพอร์ตี้ที่มีสิทธิ์เข้าถึงต่อพื้นที่ พร็อพเพอร์ตี้นี้จะเป็นชุดย่อยสูงสุดของสิทธิ์เข้าถึงต่อพื้นที่ เช่น หากพร็อพเพอร์ตี้มี 2 พื้นที่ที่มีสิทธิ์เข้าถึงเป็น
READ และ READ_WRITE ก็ควรตั้งค่าเป็น READ
|
changeMode |
- เปลี่ยนโหมดของพร็อพเพอร์ตี้ ต้องเป็นหนึ่งใน
STATIC ,
ON_CHANGE หรือ CONTINUOUS STATIC หมายความว่าค่าพร็อพเพอร์ตี้จะไม่เปลี่ยนแปลงหลังจากการบูตระบบ ON_CHANGE หมายความว่า VHAL ต้องรายงานเมื่อค่ามีการเปลี่ยนแปลง CONTINUOUS หมายความว่าค่าพร็อพเพอร์ตี้จะเปลี่ยนแปลงอย่างต่อเนื่อง และ VHAL ต้องรายงานตามอัตราการสุ่มตัวอย่างการสมัครใช้บริการ
- สำหรับพร็อพเพอร์ตี้ของระบบ ค่านี้ต้องเท่ากับโหมดการเปลี่ยนแปลงที่ระบุไว้ใน
VehicleProperty.aidl
|
configArray |
อาร์เรย์ที่ไม่บังคับซึ่งมีการกำหนดค่าเฉพาะพร็อพเพอร์ตี้ เว้นว่างไว้ได้ สําหรับพร็อพเพอร์ตี้ของระบบบางรายการ เช่น GEAR_SELECTION อาร์เรย์ config จะมีความหมายพิเศษและต้องระบุ
|
configString |
สตริงที่ไม่บังคับซึ่งมีการกำหนดค่าเฉพาะพร็อพเพอร์ตี้ เว้นว่างไว้ได้ |
minSampleRate และ maxSampleRate |
อัตราตัวอย่างขั้นต่ำและสูงสุดที่รองรับสำหรับพร็อพเพอร์ตี้แบบต่อเนื่อง (เป็น Hertz) จะไม่ได้ใช้หากพร็อพเพอร์ตี้ไม่ต่อเนื่อง minSampleRate และ maxSampleRate ต้องบรรลุได้ด้วยการติดตั้งใช้งาน VHAL ระบบไม่จําเป็นต้องรองรับอัตราการสุ่มตัวอย่างทั้งหมดระหว่างขั้นต่ำและสูงสุด |
ประเภทที่พัก
กำหนดเป็น enum ใน VehiclePropertyType.aidl
ประเภทพร็อพเพอร์ตี้ที่รองรับแสดงอยู่ในตารางต่อไปนี้
ประเภทพร็อพเพอร์ตี้ |
ค่านิยม |
คำอธิบาย |
---|
STRING |
0x00100000 |
พร็อพเพอร์ตี้สตริง ใช้ช่อง stringValue ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
BOOLEAN |
0x00200000 |
พร็อพเพอร์ตี้ Boolean ใช้องค์ประกอบแรกในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ
0 หมายถึง false , None 0 หมายถึง true |
INT32 |
0x00400000 |
พร็อพเพอร์ตี้ Integer ใช้องค์ประกอบแรกในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
INT32_VEC |
0x00410000 |
พร็อพเพอร์ตี้ Integer[] ใช้องค์ประกอบในช่อง int32Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
INT64 |
0x00500000 |
พร็อพเพอร์ตี้แบบยาว ใช้องค์ประกอบแรกในช่อง int64Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
INT64_VEC |
0x00510000 |
พร็อพเพอร์ตี้ Long[] ใช้องค์ประกอบในช่อง int64Values ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
FLOAT |
0x00600000 |
พร็อพเพอร์ตี้ Float ใช้องค์ประกอบแรกในช่อง floatValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
FLOAT_VEC |
0x00610000 |
พร็อพเพอร์ตี้ Float[] ใช้องค์ประกอบในช่อง floatValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
BYTES |
0x00700000 |
พร็อพเพอร์ตี้ byte[] ใช้องค์ประกอบในช่อง byteValues ในค่าพร็อพเพอร์ตี้ยานพาหนะ |
MIXED |
0x00e00000 |
ที่พักประเภทผสม ชุดค่าผสมของประเภทสเกลาร์หรือเวกเตอร์ คุณต้องระบุรูปแบบที่แน่นอนในอาร์เรย์ config ในการกําหนดค่าพร็อพเพอร์ตี้
สำหรับพร็อพเพอร์ตี้ประเภท 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 และอาร์เรย์ที่มีจำนวนเต็ม 3 รายการ
|
การกําหนดค่ารหัสพื้นที่
การกําหนดค่าพร็อพเพอร์ตี้แต่ละรายการอาจมีรายการการกําหนดค่ารหัสพื้นที่ด้วย รายการนี้ไม่บังคับสำหรับพร็อพเพอร์ตี้ทั่วโลก แต่จำเป็นสำหรับพร็อพเพอร์ตี้ที่มีการแบ่งโซน (พร็อพเพอร์ตี้ที่มีพื้นที่ที่รองรับหลายแห่ง) การกําหนดค่ารหัสพื้นที่แต่ละรายการจะมีช่องต่อไปนี้
ช่อง |
คำอธิบาย |
---|
areaId |
รหัสของพื้นที่นี้ ดูรหัสพื้นที่ |
minInt32Value และ maxInt32Value |
- ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT32 ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้
IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
|
minInt64Value และ maxInt64Value |
- ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT64 ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้
IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
|
minFloatValue และ maxFloatValue |
- ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท Float ในเวลาบูต ต้องเท่ากับ 0 สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้ง 2 รายการเป็น 0.0
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าขั้นต่ำและสูงสุด ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลงขณะรันไทม์ ใช้
IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
|
(ใหม่ใน Android 14)
supportedEnumValues |
- รายการค่าที่รองรับ (ไม่บังคับ) ในเวลาบูต หากมีการกําหนดพร็อพเพอร์ตี้เป็นพร็อพเพอร์ตี้ประเภท enum หากไม่ได้ระบุ (ว่าง) หรือก่อน Android 14 ระบบจะถือว่ารองรับค่า Enum ทั้งหมด
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าแจกแจงที่รองรับ ต้องใช้การกําหนดค่าพื้นที่ 1 รายการที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าที่รองรับจะเปลี่ยนแปลงขณะรันไทม์ ใช้
IVehicle#getSupportedValuesLists สำหรับค่าแบบไดนามิกที่รองรับ
- การดำเนินการนี้ใช้ได้กับพร็อพเพอร์ตี้ประเภท Enum เท่านั้น สำหรับประเภทอื่นๆ ช่องนี้ต้องว่างเปล่า
หากต้องการแสดงค่าที่รองรับสำหรับประเภทอื่นๆ ที่ไม่ใช่ Enum ให้ใช้
IVehicle#getSupportedValuesLists
|
(ใหม่ใน Android 15)
supportVariableUpdateRate |
- รองรับอัตราการอัปเดตตัวแปรหรือไม่ ตัวเลือกนี้ใช้ได้กับพร็อพเพอร์ตี้แบบต่อเนื่องเท่านั้น
- หากเป็น
true แอปจะเปิดใช้อัตราการอัปเดตแบบผันแปรสำหรับการติดตามเพื่อรับเหตุการณ์การอัปเดตพร็อพเพอร์ตี้เฉพาะในกรณีที่ค่าพร็อพเพอร์ตี้มีการเปลี่ยนแปลงเท่านั้น (ซึ่งจะถือว่าพร็อพเพอร์ตี้แบบต่อเนื่องเป็นพร็อพเพอร์ตี้แบบมีการเปลี่ยนแปลง)
- หากผู้สมัครใช้บริการทั้งหมดของพร็อพเพอร์ตี้เปิดใช้อัตราการอัปเดตแบบผันแปร คําขอการสมัครใช้บริการ VHAL จะเปิดใช้อัตราการอัปเดตแบบผันแปรสําหรับพร็อพเพอร์ตี้ และ VHAL ต้องส่งเหตุการณ์การอัปเดตพร็อพเพอร์ตี้เฉพาะเมื่อค่าพร็อพเพอร์ตี้มีการเปลี่ยนแปลงเท่านั้น
- หากผู้สมัครใช้บริการรายใดขออัตราการอัปเดตแบบคงที่ คำขอการสมัครใช้บริการ VHAL จะปิดใช้อัตราการอัปเดตแบบผันผวนสำหรับพร็อพเพอร์ตี้ และ AAOS จะกรองเหตุการณ์ที่ซ้ำกันออกสำหรับลูกค้าที่ขออัตราการอัปเดตแบบผันผวน
- ขอแนะนําอย่างยิ่งให้รองรับอัตราการอัปเดตแบบผันแปรสําหรับพร็อพเพอร์ตี้ต่อเนื่องที่ไม่ใช่การเต้นของหัวใจทั้งหมดเพื่อให้ประสิทธิภาพดีขึ้น เว้นแต่ว่าข้อมูลพร็อพเพอร์ตี้จะมีขนาดใหญ่ (เช่น อาร์เรย์ไบต์ขนาด 1, 000) และอาจใช้หน่วยความจําจํานวนมากในการแคช
|
(ใหม่ใน Android 16)
hasSupportedValueInfo |
- หากไม่ใช่
null จะแสดงว่าพร็อพเพอร์ตี้นี้ระบุค่าต่ำสุดหรือสูงสุดที่รองรับ หรือรายการค่าที่รองรับ
- ฟิลด์นี้ควบคุมว่าระบบรองรับ API มูลค่าที่รองรับแบบไดนามิก
getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange และ unsubscribeSupportedValueChange สำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้หรือไม่
- หากไม่ใช่
null ทาง VHAL ต้องใช้ API เหล่านี้สำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้
- หากเป็น
null หรือใน Android 15 หรือต่ำกว่า ระบบจะไม่รองรับค่าที่รองรับแบบไดนามิกสำหรับรหัสพร็อพเพอร์ตี้และรหัสพื้นที่นี้ ลูกค้าต้องใช้ข้อมูลค่าที่รองรับแบบคงที่ที่ระบุในการกําหนดค่าที่พัก
|
ประเภทพื้นที่
กำหนดเป็น enum ใน VehicleArea.aidl
ประเภทพื้นที่ที่รองรับมีดังนี้
ประเภทพื้นที่ |
ค่านิยม |
คำอธิบาย |
---|
ทั่วโลก |
0x01000000 |
พร็อพเพอร์ตี้นี้เป็นพร็อพเพอร์ตี้ทั่วโลกและไม่มีหลายพื้นที่ |
กรอบเวลา |
0x03000000 |
พื้นที่ตามกรอบเวลา ใช้ VehicleAreaWindow enum |
Mirror |
0x04000000 |
พื้นที่ตามมิเรอร์ ใช้ VehicleAreaMirror enum |
SEAT |
0x05000000 |
พื้นที่ตามที่นั่ง ใช้ VehicleAreaSeat enum |
DOOR |
0x06000000 |
พื้นที่ตามประตู ใช้ VehicleAreaDoor enum |
WHEEL |
0x07000000 |
พื้นที่ตามล้อ ใช้ VehicleAreaWheel enum |
พร็อพเพอร์ตี้ที่มีการแบ่งเขตแต่ละรายการต้องใช้ประเภทพื้นที่ที่กำหนดไว้ล่วงหน้า พื้นที่แต่ละประเภทจะมีชุด Flag แบบบิตที่กําหนดไว้ใน Enum สําหรับประเภทพื้นที่ ตัวอย่างเช่น พื้นที่ SEAT จะกำหนด VehicleAreaSeat
enum ต่อไปนี้
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
...
รหัสพื้นที่
พร็อพเพอร์ตี้ที่มีการแบ่งโซนจะระบุผ่านรหัสพื้นที่ พร็อพเพอร์ตี้ที่มีการแบ่งโซนแต่ละรายการอาจรองรับรหัสพื้นที่ได้อย่างน้อย 1 รหัส รหัสพื้นที่ประกอบด้วย Flag อย่างน้อย 1 รายการจาก Enum ที่เกี่ยวข้อง ตัวอย่างเช่น พร็อพเพอร์ตี้ที่ใช้ VehicleAreaSeat
อาจใช้รหัสพื้นที่ต่อไปนี้
รายการ |
คำอธิบาย |
---|
ROW_1_LEFT | ROW_1_RIGHT |
รหัสพื้นที่มีผลกับทั้ง 2 ที่นั่งด้านหน้า |
ROW_2_LEFT |
มีผลกับที่นั่งด้านซ้ายด้านหลังเท่านั้น |
ROW_2_RIGHT |
ใช้กับที่นั่งด้านหลังขวาเท่านั้น |
ดูข้อมูลเพิ่มเติมได้ที่ HVAC
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-06-12 UTC
[[["เข้าใจง่าย","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-06-12 UTC"],[],[]]