Trước khi bạn tiếp tục, hãy xem lại Nguyên tắc mất tập trung khi lái xe .
Trang này mô tả các quy tắc Hạn chế trải nghiệm người dùng ô tô (UX) mà bạn có thể sử dụng để tạo nhiều cấu hình quy tắc Hạn chế UX (ví dụ: Liên minh Châu Âu so với Nhật Bản) và sau đó xác định bộ quy tắc nào sẽ áp dụng trong thời gian chạy. Để biết thêm thông tin, hãy xem CarUxRestrictions .
Dịch vụ Hạn chế UX trên ô tô cho phép nhà phát triển xác định cấu hình Hạn chế UX trên ô tô mới. Nếu nhà phát triển muốn sửa đổi các quy tắc hạn chế (chẳng hạn như để tuân thủ các tiêu chuẩn an toàn địa phương), nhà phát triển có thể sử dụng API để xác định cấu hình mới.
API để thiết lập cấu hình chỉ tồn tại trong cấu hình mới. Nói cách khác, cấu hình không có hiệu lực ngay lập tức. Thay vào đó, cấu hình mới sẽ được tải khi dịch vụ Hạn chế UX khởi động lại và xe đang ở chế độ Đỗ. Dịch vụ xe đảm bảo xe đang ở trạng thái đỗ trước khi tải lại cấu hình mới.
Ngoài phương thức dịch vụ Hạn chế UX mới, các API được cung cấp để xây dựng cấu hình. Trạng thái chọn số và tốc độ được chuyển đổi thành một trong ba trạng thái lái xe:
- Đã đậu. Thiết bị trong công viên.
- Chạy không tải. Bánh răng không ở số Park và tốc độ bằng không.
- Di chuyển. Bánh răng không ở số Park và tốc độ không bằng 0.
Để tìm hiểu cách ứng dụng sử dụng trạng thái lái xe của ô tô và các hạn chế UX tương ứng, hãy xem Sử dụng trạng thái lái xe ô tô và Hạn chế UX .
Cấu hình hạn chế dựa trên trạng thái ổ đĩa
Để ngăn chặn sự mất tập trung của người lái xe, Android ánh xạ trạng thái lái xe tới một bộ Hạn chế UX
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Đã đậu. Không hạn chế.
- Chạy không tải. Không có video và không có màn hình cấu hình.
- Di chuyển. Bị hạn chế hoàn toàn (tất cả các hạn chế đều được yêu cầu).
Ánh xạ minh họa ở trên được xác định trước và định cấu hình dưới dạng tài nguyên XML. Các
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
sau đó lưu các quy tắc vào bộ nhớ. Sau đó, dịch vụ sẽ ánh xạ trạng thái lái xe hiện tại tới Hạn chế UX và truyền phát các hạn chế hiện tại tới toàn bộ hệ thống.<!-- No restrictions when car is parked --> <DrivingState car:state="parked"> <Restrictions car:requiresDistractionOptimization="false" car:uxr="baseline"/> </DrivingState> <!-- Restrictions when car is idling --> <DrivingState car:state="idling"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video|no_config"/> </DrivingState> <!-- Restrictions for speed >= 0 m/s --> <DrivingState car:state="moving" car:minSpeed="0.0"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="fully_restricted"/> </DrivingState>
Cấu hình cho nhiều màn hình
Theo mặc định, không có hạn chế nào được áp dụng cho các màn hình bổ sung. Để tạo cấu hình hạn chế cho nhiều màn hình, hãy bao gồm thẻ RestrictionMapping
với Cổng vật lý cho màn hình đó. Các hạn chế thích hợp sẽ tự động được áp dụng cho mỗi màn hình. Trong ví dụ sau, màn hình có Id cổng vật lý 1 và 2 có cấu hình khác nhau:
<RestrictionMapping car:physicalPort="1"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_keyboard|no_video"/> </DrivingState> </RestrictionMapping> <RestrictionMapping car:physicalPort="2"> <DrivingState car:state="moving"> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </RestrictionMapping>
Cấu hình cho các chế độ hạn chế
Bạn có thể chọn bất kỳ tên nào cho chế độ, chẳng hạn như teen . Trong ví dụ sau, các hạn chế khác nhau được định cấu hình cho chế độ mặc định và chế độ hành khách (trước đây chỉ hỗ trợ chế độ hành khách ):
<DrivingState car:state="idling"> <Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/> <Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/> </DrivingState> </Restrictions>Bạn có thể sử dụng API để đặt bất kỳ tên chuỗi nào cho chế độ. Ví dụ: phương thức
setRestrictionMode(@NonNull String mode)
trong CarUxRestrictionsManager. (Trước đây, bạn sẽ sử dụng phương thức setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
trong CarUxRestrictionsManager).API cấu hình CarUxRestrictions
Hạn chế với CarUxRestrictionsConfiguration
Lớp CarUxRestrictionsConfiguration
mới được ánh xạ 1:1 tới lược đồ cấu hình XML hiện tại. CarUxRestrictionsConfiguration
có thể được xây dựng bằng CarUxRestrictions. Builder
, xác thực cấu hình khi build().
new CarUxRestrictionsConfiguration.Builder() // Explicitly set restrictions for each driving state. .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_PARKED, /* requiresOptimization= */ false, /* restrictions= */ UX_RESTRICTIONS_BASELINE) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_IDLING, true, UX_RESTRICTIONS_NO_VIDEO|UX_RESTRICTIONS_NO_SETUP) .setUxRestrictions(CarDrivingStateEvent.DRIVING_STATE_MOVING, true, UX_RESTRICTIONS_FULLY_RESTRICTED) // Set restriction parameters. .setMaxStringLength(int max) .setMaxCumulativeContentItems(int max) .setMaxContentDepth(int max) // Build a new CarUxRestrictionsConfiguration. .build();
API CarUxRestrictionsManager
Đặt CarUxRestrictionsConfiguration
cho lần lái xe tiếp theo bằng CarUxRestrictionsManager
. Phương pháp này cần có sự cho phép, Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Duy trì cấu hình Hạn chế UX mới
Khi một cấu hình mới được chuyển vào, dịch vụ Hạn chế UX sẽ trả về một boolean để cho biết cấu hình mới đã được lưu thành công hay chưa. Cấu hình mới này chỉ được sử dụng khi Bộ phận Đầu Tích hợp (IHU) khởi động lại và xe đang đỗ. Trong nội bộ, dịch vụ Hạn chế UX chứa hai bộ cấu hình:
- Sản xuất. Mặc dù là tùy chọn nhưng cấu hình này thường có sẵn. Dịch vụ Hạn chế UX đọc cấu hình này khi khởi động.
- Đã được dàn dựng. Cũng là tùy chọn, cấu hình này không ảnh hưởng đến Hạn chế UX và được thăng cấp lên Sản xuất khi dịch vụ ô tô khởi động và khi ô tô đang đỗ.
Hình 1. Cấu hình sản xuất
Địa chỉ lỗi
Cho đến khi nhận được thông tin trạng thái lái xe từ CarPropertyManager (ví dụ: trong khi khởi động), Hạn chế UX sẽ không được thực thi. Hệ thống hoạt động như thể trạng thái lái xe là Đỗ xe.
Nếu việc đọc cấu hình đã lưu không thành công (ví dụ: kết quả SettingNotFoundException), dịch vụ Hạn chế UX sẽ quay trở lại chế độ được mã hóa cứng, hạn chế hoàn toàn:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Trạng thái lái xe và hạn chế của người dùng
Nội dung sau đây mô tả các tương tác được hiển thị trong sơ đồ thiết kế sau:
Hình 2. Tương tác trạng thái điều khiển
Các thuộc tính được sử dụng để lấy trạng thái lái xe
Sử dụng ba VehiclePropertyIds
sau để lấy trạng thái lái xe:
API có sẵn cho ứng dụng
Mã nằm ở các vị trí sau:
Mã số | Vị trí |
---|---|
CarUxRestrictionsManager API công khai để đăng ký các thay đổi Hạn chế UX. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarUxRestrictions Định nghĩa hạn chế UX. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
CarDrivingStateManager API hệ thống để đăng ký thay đổi trạng thái lái xe. | /packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java |
Để mô phỏng các trạng thái lái xe, hãy xem Kiểm tra .
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: 2024-04-29 UTC.