Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Cấu hình tài sản
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Mỗi thuộc tính được hỗ trợ đều được chỉ định bằng một cấu hình thuộc tính được xác định thông qua cấu trúc VehiclePropConfig
và có các trường sau.
Trường |
Mô tả |
---|
prop |
Mã tài sản. Đây phải là một trong các thuộc tính hệ thống được xác định từ VehicleProperty.aidl hoặc một thuộc tính của nhà cung cấp. Mã nhận dạng tài sản được tạo bằng cách sử dụng bit-or của các trường sau (từ phải sang trái):
- (0x00000000) 16 bit: Một mã nhận dạng duy nhất trong phạm vi 0x0100 – 0xffff.
- (0x00000000) 8 bit: Loại tài sản xác định loại cho tài sản.
- (0x00000000) 4 bit: Loại khu vực.
- (0x00000000) 4 bit:
VehiclePropertyGroup Đây là SYSTEM (0x10000000) hoặc VENDOR (0x20000000). Hãy xem Vendor Properties (Thuộc tính của nhà cung cấp) để biết các thuộc tính mà bạn có thể tuỳ chỉnh.
Ví dụ:
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- Chế độ truy cập cho tài sản. Phải là một trong các giá trị
READ , WRITE hoặc READ_WRITE .
- Đối với các thuộc tính hệ thống, đây phải là một trong các chế độ truy cập được xác định trong
VehicleProperty.aidl .
- Đối với những tài sản có quyền truy cập theo khu vực, đây là tập hợp con tối đa của quyền truy cập theo khu vực, ví dụ: nếu các tài sản có 2 khu vực có quyền truy cập là
READ và READ_WRITE , thì bạn nên đặt giá trị này thành READ .
|
changeMode |
- Thay đổi chế độ cho tài sản. Phải là một trong các giá trị
STATIC , ON_CHANGE hoặc CONTINUOUS . STATIC có nghĩa là giá trị thuộc tính không bao giờ thay đổi sau khi hệ thống khởi động. ON_CHANGE có nghĩa là VHAL phải báo cáo khi giá trị thay đổi. CONTINUOUS có nghĩa là giá trị thuộc tính thay đổi liên tục và VHAL phải báo cáo dựa trên tốc độ lấy mẫu của gói thuê bao.
- Đối với các thuộc tính hệ thống, giá trị này phải bằng chế độ thay đổi được ghi trong
VehicleProperty.aidl .
|
configArray |
Một mảng không bắt buộc để chứa cấu hình dành riêng cho tài sản. Có thể để trống. Đối với một số thuộc tính hệ thống nhất định, chẳng hạn như GEAR_SELECTION , mảng cấu hình có ý nghĩa đặc biệt và phải được chỉ định.
|
configString |
Một chuỗi không bắt buộc để chứa cấu hình cụ thể của tài sản. Có thể để trống. |
minSampleRate và maxSampleRate |
Tốc độ lấy mẫu tối thiểu và tối đa được hỗ trợ cho thuộc tính liên tục (tính bằng Hertz). Không được dùng nếu thuộc tính không liên tục. Việc triển khai VHAL phải đạt được minSampleRate và maxSampleRate . Không phải tốc độ lấy mẫu nào trong khoảng từ tối thiểu đến tối đa cũng phải được hỗ trợ. |
Loại khách sạn
Được xác định là enum trong VehiclePropertyType.aidl
. Các loại tài sản được hỗ trợ có trong bảng sau.
Loại tài sản |
Giá trị |
Mô tả |
---|
STRING |
0x00100000 |
Thuộc tính chuỗi, sử dụng trường stringValue trong Giá trị thuộc tính của xe. |
BOOLEAN |
0x00200000 |
Thuộc tính Boolean , sử dụng phần tử đầu tiên trong trường int32Values trong Giá trị thuộc tính của xe.
0 có nghĩa là false , None 0 có nghĩa là true . |
INT32 |
0x00400000 |
Thuộc tính Integer , sử dụng phần tử đầu tiên trong trường int32Values trong Giá trị thuộc tính của xe. |
INT32_VEC |
0x00410000 |
Thuộc tính Integer[] , sử dụng các phần tử trong trường int32Values trong Giá trị thuộc tính của xe. |
INT64 |
0x00500000 |
Thuộc tính dài, sử dụng phần tử đầu tiên trong trường int64Values trong Giá trị thuộc tính của xe. |
INT64_VEC |
0x00510000 |
Thuộc tính Long[] , sử dụng các phần tử trong trường int64Values trong Giá trị thuộc tính của xe. |
FLOAT |
0x00600000 |
Thuộc tính Float , sử dụng phần tử đầu tiên trong trường floatValues trong Giá trị thuộc tính của xe. |
FLOAT_VEC |
0x00610000 |
Thuộc tính Float[] , sử dụng các phần tử trong trường floatValues trong Giá trị thuộc tính của xe. |
BYTES |
0x00700000 |
Thuộc tính byte[] , sử dụng các phần tử trong trường byteValues trong Giá trị thuộc tính của xe. |
MIXED |
0x00e00000 |
Thuộc tính thuộc loại hỗn hợp. Mọi tổ hợp kiểu vô hướng hoặc vectơ. Bạn phải cung cấp định dạng chính xác trong mảng cấu hình trong cấu hình tài sản.
Đối với các thuộc tính thuộc loại MIXED của nhà cung cấp, bạn cần định dạng configArray theo cấu trúc sau:
configArray[0] , 1 cho biết thuộc tính có giá trị String
configArray[1] , 1 cho biết thuộc tính có giá trị Boolean
configArray[2] , 1 cho biết thuộc tính có giá trị Integer
configArray[3] , số này cho biết kích thước của Integer[] trong tài sản
configArray[4] , 1 cho biết thuộc tính có giá trị Long
configArray[5] , số này cho biết kích thước của Long[] trong tài sản
configArray[6] , 1 cho biết thuộc tính có giá trị Float
configArray[7] , số này cho biết kích thước của Float[] trong tài sản
configArray[8] , số này cho biết kích thước của byte[] trong tài sản.
Ví dụ: configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} cho biết thuộc tính có giá trị String , giá trị Boolean , giá trị Integer và một mảng có 3 số nguyên.
|
Cấu hình mã khu vực
Mỗi cấu hình tài sản cũng có thể chứa danh sách các cấu hình mã nhận dạng khu vực. Danh sách này là không bắt buộc đối với các tài sản trên toàn cầu và bắt buộc đối với các tài sản theo khu vực (tài sản có nhiều khu vực được hỗ trợ). Mỗi cấu hình mã khu vực đều có các trường sau.
Trường |
Mô tả |
---|
areaId |
Mã nhận dạng của khu vực này. Xem Mã khu vực. |
minInt32Value và maxInt32Value |
- Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính thuộc loại INT32 tại thời điểm khởi động. Phải là 0 đối với tất cả các loại khác. Bị bỏ qua nếu cả hai đều bằng 0.
- Đối với tài sản toàn cầu, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
- Giá trị này là giá trị tĩnh và sẽ không thay đổi ngay cả khi giá trị tối thiểu hoặc tối đa thay đổi trong thời gian chạy. Triển khai
IVehicle#getMinMaxSupportedValue cho giá trị tối thiểu hoặc tối đa động.
|
minInt64Value và maxInt64Value |
- Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính thuộc loại INT64 tại thời điểm khởi động. Phải là 0 đối với tất cả các loại khác. Bị bỏ qua nếu cả hai đều bằng 0.
- Đối với tài sản toàn cầu, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
- Giá trị này là giá trị tĩnh và sẽ không thay đổi ngay cả khi giá trị tối thiểu hoặc tối đa thay đổi trong thời gian chạy. Triển khai
IVehicle#getMinMaxSupportedValue cho giá trị tối thiểu hoặc tối đa động.
|
minFloatValue và maxFloatValue |
- Giá trị tối thiểu và tối đa không bắt buộc cho các thuộc tính thuộc loại Float tại thời điểm khởi động. Phải là 0 đối với tất cả các loại khác. Bị bỏ qua nếu cả hai đều là 0.0.
- Đối với tài sản toàn cầu, nếu cần xác định giá trị tối thiểu và tối đa, bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
- Giá trị này là giá trị tĩnh và sẽ không thay đổi ngay cả khi giá trị tối thiểu hoặc tối đa thay đổi trong thời gian chạy. Triển khai
IVehicle#getMinMaxSupportedValue cho giá trị tối thiểu hoặc tối đa động.
|
(Tính năng mới trong Android 14)
supportedEnumValues |
- Danh sách không bắt buộc gồm các giá trị được hỗ trợ tại thời điểm khởi động nếu thuộc tính được xác định là thuộc tính loại enum. Nếu không được chỉ định (trống) hoặc trước Android 14, thì giả định là tất cả các giá trị enum đều được hỗ trợ.
- Đối với tài sản toàn cầu, nếu bạn cần xác định các giá trị enum được hỗ trợ, thì bạn phải sử dụng một cấu hình khu vực có mã khu vực là 0.
- Giá trị này là tĩnh và sẽ không thay đổi ngay cả khi các giá trị được hỗ trợ thay đổi trong thời gian chạy. Triển khai
IVehicle#getSupportedValuesLists cho các giá trị được hỗ trợ động.
- Điều này chỉ áp dụng cho các thuộc tính thuộc loại enum. Đối với các loại khác, trường này phải trống.
Để hiển thị các giá trị được hỗ trợ cho các loại không phải enum khác, hãy sử dụng
IVehicle#getSupportedValuesLists .
|
(Tính năng mới trong Android 15)
supportVariableUpdateRate |
- Có hỗ trợ tốc độ cập nhật biến hay không. Điều này chỉ áp dụng cho các thuộc tính liên tục.
- Nếu đây là
true , ứng dụng có thể bật tốc độ cập nhật biến cho một dịch vụ thuê bao để chỉ nhận các sự kiện cập nhật thuộc tính khi giá trị thuộc tính thay đổi (tức là coi các thuộc tính liên tục là thuộc tính khi thay đổi).
- Nếu tất cả các thuê bao cho một tài sản đều đang bật tốc độ cập nhật biến, thì yêu cầu đăng ký đối với VHAL sẽ bật tốc độ cập nhật biến cho tài sản và VHAL chỉ được gửi các sự kiện cập nhật tài sản khi giá trị tài sản thay đổi.
- Nếu có bất kỳ người đăng ký nào yêu cầu tốc độ cập nhật cố định, thì yêu cầu đăng ký đối với VHAL sẽ tắt tốc độ cập nhật thay đổi cho thuộc tính và AAOS sẽ lọc ra các sự kiện trùng lặp cho những ứng dụng yêu cầu tốc độ cập nhật thay đổi.
- Bạn NÊN hỗ trợ tốc độ cập nhật biến cho tất cả các thuộc tính liên tục không phải nhịp tim để có hiệu suất tốt hơn, trừ phi dữ liệu thuộc tính lớn (ví dụ: một mảng byte có kích thước 1k) và có thể chiếm một lượng lớn bộ nhớ để lưu vào bộ nhớ đệm.
|
(Tính năng mới trong Android 16)
hasSupportedValueInfo |
- Nếu không phải
null , hãy cho biết liệu thuộc tính này có chỉ định giá trị tối thiểu hoặc tối đa được hỗ trợ hay danh sách giá trị được hỗ trợ.
- Trường này kiểm soát việc các API giá trị được hỗ trợ động:
getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange , unsubscribeSupportedValueChange có được hỗ trợ cho mã tài sản và mã khu vực này hay không.
- Nếu không phải
null , VHAL phải triển khai các API này cho mã nhận dạng thuộc tính và mã nhận dạng khu vực này.
- Nếu
null hoặc trong Android 15 trở xuống, các giá trị được hỗ trợ động cho mã nhận dạng tài sản và mã nhận dạng khu vực này sẽ không được hỗ trợ. Ứng dụng phải sử dụng thông tin giá trị tĩnh được hỗ trợ có trong cấu hình thuộc tính xe.
|
Loại khu vực
Được xác định là enum trong VehicleArea.aidl
. Các loại khu vực được hỗ trợ được liệt kê bên dưới.
Loại khu vực |
Giá trị |
Mô tả |
---|
TOÀN CẦU |
0x01000000 |
Đây là một tài sản toàn cầu và không có nhiều khu vực. |
WINDOW |
0x03000000 |
Khu vực dựa trên các cửa sổ, sử dụng giá trị enum VehicleAreaWindow . |
MIRROR |
0x04000000 |
Khu vực dựa trên gương, sử dụng enum VehicleAreaMirror . |
CHỖ NGỒI |
0x05000000 |
Khu vực dựa trên ghế, sử dụng enum VehicleAreaSeat . |
DOOR |
0x06000000 |
Diện tích dựa trên cửa, sử dụng enum VehicleAreaDoor . |
WHEEL |
0x07000000 |
Khu vực dựa trên bánh xe, sử dụng enum VehicleAreaWheel . |
Mỗi tài sản được phân vùng phải sử dụng một loại khu vực được xác định trước. Mỗi loại khu vực có một nhóm cờ bit được xác định trong một enum cho loại khu vực. Ví dụ: khu vực SEAT xác định các enum 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
...
Mã khu vực
Các tài sản được phân vùng được giải quyết thông qua mã nhận dạng khu vực. Mỗi tài sản được phân vùng có thể hỗ trợ một hoặc nhiều mã khu vực. Mã nhận dạng khu vực bao gồm một hoặc nhiều cờ trong enum tương ứng. Ví dụ: một tài sản sử dụng VehicleAreaSeat
có thể sử dụng các mã khu vực sau:
Mục |
Mô tả |
---|
ROW_1_LEFT | ROW_1_RIGHT |
Mã nhận dạng khu vực áp dụng cho cả hai ghế trước. |
ROW_2_LEFT |
Chỉ áp dụng cho ghế sau bên trái. |
ROW_2_RIGHT |
Chỉ áp dụng cho ghế sau bên phải. |
Để tìm hiểu thêm, hãy xem phần HVAC.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-10-10 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-10-10 UTC."],[],[]]