ตั้งแต่วันที่ 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 อาร์เรย์การกําหนดค่าจะมีความหมายพิเศษและต้องระบุ
|
configString |
สตริงที่ไม่บังคับซึ่งมีการกำหนดค่าเฉพาะพร็อพเพอร์ตี้ เว้นว่างไว้ได้ |
minSampleRate และ maxSampleRate |
อัตราการสุ่มตัวอย่างขั้นต่ำและสูงสุดที่รองรับสำหรับพร็อพเพอร์ตี้แบบต่อเนื่อง (ในหน่วยเฮิรตซ์) ไม่ใช้หากพร็อพเพอร์ตี้
ไม่ต่อเนื่อง 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 |
ที่พักประเภทผสม ชุดค่าผสมของประเภทสเกลาร์หรือเวกเตอร์ ต้องระบุรูปแบบที่แน่นอนในอาร์เรย์การกำหนดค่าในการกำหนดค่าพร็อพเพอร์ตี้
สำหรับพร็อพเพอร์ตี้ประเภท 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
สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้งคู่เป็น 0
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าต่ำสุดและสูงสุด คุณต้องใช้การกําหนดค่าพื้นที่ 1 รายการ
ที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลง
ในขณะรันไทม์ก็ตาม ใช้
IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
|
minInt64Value และ maxInt64Value |
- ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท INT64 ในเวลาบูต ต้องเป็น 0
สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้งคู่เป็น 0
- สําหรับพร็อพเพอร์ตี้ส่วนกลาง หากจําเป็นต้องกําหนดค่าต่ำสุดและสูงสุด คุณต้องใช้การกําหนดค่าพื้นที่ 1 รายการ
ที่มีรหัสพื้นที่ 0
- ค่านี้เป็นค่าคงที่และจะไม่เปลี่ยนแปลงแม้ว่าค่าต่ำสุดหรือสูงสุดจะเปลี่ยนแปลง
ในขณะรันไทม์ก็ตาม ใช้
IVehicle#getMinMaxSupportedValue สำหรับค่าต่ำสุดหรือสูงสุดแบบไดนามิก
|
minFloatValue และ maxFloatValue |
- ค่าต่ำสุดและสูงสุดที่ไม่บังคับสำหรับพร็อพเพอร์ตี้ประเภท Float ในเวลาบูต ต้องเป็น 0
สำหรับประเภทอื่นๆ ทั้งหมด ระบบจะไม่สนใจหากทั้งคู่เป็น 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 จะกรอง
เหตุการณ์ที่ซ้ำกันสำหรับไคลเอ็นต์ที่ขออัตราการอัปเดตแบบแปรผัน
- ขอแนะนำอย่างยิ่งให้รองรับอัตราการอัปเดตตัวแปรสำหรับพร็อพเพอร์ตี้ต่อเนื่องทั้งหมดที่ไม่ใช่การตรวจสอบสถานะ
เพื่อประสิทธิภาพที่ดีขึ้น เว้นแต่ข้อมูลพร็อพเพอร์ตี้จะมีขนาดใหญ่ (เช่น
อาร์เรย์ไบต์ขนาด 1k) และอาจใช้หน่วยความจำจำนวนมากสำหรับการแคช
|
(ใหม่ใน 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 |
ล้อ |
0x07000000 |
พื้นที่ตามล้อ ใช้ VehicleAreaWheel enum |
พร็อพเพอร์ตี้ที่แบ่งเขตแต่ละรายการต้องใช้ประเภทพื้นที่ที่กำหนดไว้ล่วงหน้า ประเภทพื้นที่แต่ละประเภทมีชุดบิตแฟล็ก
ที่กำหนดไว้ใน Enum สำหรับประเภทพื้นที่ ตัวอย่างเช่น พื้นที่ SEAT จะกำหนด
VehicleAreaSeat
enums ดังนี้
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 รายการ
รหัสพื้นที่ประกอบด้วยการตั้งค่าสถานะอย่างน้อย 1 รายการจาก Enum ที่เกี่ยวข้อง เช่น พร็อพเพอร์ตี้ที่ใช้ VehicleAreaSeat
อาจใช้รหัสพื้นที่ต่อไปนี้
รายการ |
คำอธิบาย |
---|
ROW_1_LEFT | ROW_1_RIGHT |
รหัสพื้นที่ใช้ได้กับทั้งที่นั่งด้านหน้า |
ROW_2_LEFT |
โดยจะมีผลเฉพาะที่นั่งด้านหลังซ้าย |
ROW_2_RIGHT |
โดยจะมีผลกับที่นั่งด้านหลังขวาเท่านั้น |
ดูข้อมูลเพิ่มเติมได้ที่ HVAC
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-10-10 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-10-10 UTC"],[],[]]