Trước khi bạn tiếp tục, hãy xem Nguyên tắc lái xe.
Trang này mô tả các quy tắc Hạn chế về trải nghiệm người dùng trên ô tô (UX) mà bạn có thể sử dụng để tạo nhiều cấu hình quy tắc Hạn chế trải nghiệm người dùng (ví dụ: Liên minh Châu Âu so với Nhật Bản), sau đó xác định bộ quy tắc sẽ áp dụng vào thời gian chạy. Để biết thêm thông tin, hãy xem Hạn chế CarUx.
Dịch vụ Hạn chế về trải nghiệm người dùng trên ô tô giúp nhà phát triển xác định các Quy định hạn chế mới về trải nghiệm người dùng trên ô tô . 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ủ an toàn), 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 này 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 là tải khi dịch vụ Hạn chế trải nghiệm người dùng khởi động lại và xe đang ở trạng thái đỗ. Dịch vụ xe hơi đảm bảo xe đang đỗ 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ế trải nghiệm người dùng mới, chúng tôi cung cấp các API để tạo . Trạng thái lựa chọn bánh răng và tốc độ được chuyển đổi thành một trong ba trạng thái lái xe:
- Đã đỗ xe. Đồ dùng trong công viên.
- Không hoạt động. Bánh răng không ở trong Công viên và tốc độ bằng 0.
- Chuyển nhà. Bánh răng không ở trong công viên và tốc độ không bằng 0.
Để tìm hiểu cách các ứng dụng sử dụng trạng thái lái của ô tô và các hạn chế tương ứng về trải nghiệm người dùng, xem bài viết Sử dụng các quy định hạn chế về trải nghiệm người dùng và trạng thái lái xe ô tô.
Cấu hình hạn chế dựa trên trạng thái ổ đĩa
Để ngăn sự phân tâm của người lái xe, Android sẽ ánh xạ trạng thái lái xe theo một bộ Hạn chế về trải nghiệm người dùng
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- Đã đỗ xe. Không hạn chế.
- Không hoạt động. Không có video và không có màn hình cấu hình.
- Chuyển nhà. Bị hạn chế hoàn toàn (bắt buộc phải có tất cả quy tắc hạn chế).
Ánh xạ minh hoạ ở trên được xác định trước và định cấu hình dưới dạng tài nguyên XML. Chiến lược phát hành đĩa đơn
/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ụ này liên kết trạng thái lái xe hiện tại đến các Hạn chế về trải nghiệm người dùng
và truyền phát các hạn chế hiện tại cho 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. Cách tạo quy định hạn chế
các cấu hình cho nhiều màn hình, hãy bao gồm thẻ RestrictionMapping
cùng với phần
cổng vật lý cho màn hình đó. Các quy định hạn chế phù 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 thực 1 và 2 có
cấu hình:
<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ư thanh thiếu niên. Trong ví dụ sau đây: các hạn chế khác nhau được thiết lập 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ế độ này. Ví dụ: Phương thức
setRestrictionMode(@NonNull String mode)
trong CarUxRestrictManager.
(Trước đây, bạn sẽ sử dụng
Phương thức setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
trong
CarUxRestrictManager).
Các API CarUxRestrictConfiguration
Các hạn chế với CarUxRestrictConfiguration
Lớp mới CarUxRestrictionsConfiguration
được liên kết 1:1 với XML hiện tại
giản đồ cấu hình. Bạn có thể tạo CarUxRestrictionsConfiguration
bằng CarUxRestrictions.
để xác thực cấu hình
dựa trên bản dựng().
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 CarUxRestrictManager
Đặt CarUxRestrictionsConfiguration
cho lần lái xe tiếp theo bằng CarUxRestrictionsManager
. Phương pháp này yêu cầu quyền,
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
Duy trì cấu hình Hạn chế trải nghiệm người dùng mới
Khi một cấu hình mới được truyền vào, dịch vụ Hạn chế trải nghiệm người dùng sẽ trả về một giá trị boolean cho biết liệu 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 dùng khi Đầu phát trung tâm tích hợp (IHU) khởi động lại và xe đậu. Trong nội bộ, Các hạn chế về trải nghiệm người dùng dịch vụ này chứa hai bộ cấu hình:
- Phát hành công khai. Mặc dù không bắt buộc, nhưng cấu hình này thường xuất hiện. Trải nghiệm người dùng Dịch vụ hạn chế sẽ đọc cấu hình này khi khởi động.
- Theo giai đoạn. Cũng không bắt buộc, cấu hình này không ảnh hưởng đến Các hạn chế về trải nghiệm người dùng và được thăng cấp lên Sản xuất khi dịch vụ ô tô bắt đầu và khi ô tô đỗ.
Hình 1. Cấu hình sản xuất
Lỗi địa chỉ
Cho đến khi nhận được thông tin về trạng thái lái xe từ CarPropertyManager (ví dụ: trong khi khởi động), Các quy định hạn chế về trải nghiệm người dùng sẽ không được thực thi. Hệ thống hoạt động như thể trạng thái lái xe Đã đỗ xe.
Nếu không đọc được cấu hình đã lưu (ví dụ: kết quả của SettingsNotFoundException), thì Dịch vụ Hạn chế trải nghiệm người dùng quay lại chế độ được mã hoá cứng, bị hạn chế hoàn toàn:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
Các hạn chế đối với người dùng và trạng thái lái xe
Nội dung sau đây mô tả các hoạt động tương tác hiển thị trong sơ đồ thiết kế sau:
Hình 2. Thúc đẩy lượt tương tác theo trạng thái
Các thuộc tính dùng để lấy trạng thái lái xe
Sử dụng 3 VehiclePropertyIds
sau để lấy trạng thái lái xe:
API có sẵn cho ứng dụng
Mã này nằm ở các vị trí sau:
Mã | Vị trí |
---|---|
CarUxRestrictionsManager
Các API công khai để đăng ký các thay đổi về Quy định hạn chế về trải nghiệm người dùng.
|
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictions
Định nghĩa các quy định hạn chế về trải nghiệm người dùng.
|
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager
Các API hệ thống để đăng ký các thay đổi về trạng thái lái xe. |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
Để mô phỏng trạng thái lái xe, hãy xem Kiểm thử.