โปรดอ่านหลักเกณฑ์การรบกวนการขับรถก่อนดำเนินการต่อ
หน้านี้อธิบายกฎข้อจำกัดประสบการณ์ของผู้ใช้รถยนต์ (UX) ที่คุณใช้สร้างได้ การกําหนดค่ากฎข้อจํากัด UX หลายรายการ (เช่น สหภาพยุโรปเทียบกับญี่ปุ่น) จากนั้น กำหนดชุดของกฎที่จะใช้ในเวลาทำงาน สำหรับข้อมูลเพิ่มเติม โปรดดู CarUxRestrictions
บริการข้อจำกัด UX ของรถยนต์ช่วยให้นักพัฒนาซอฟต์แวร์กำหนดข้อจำกัดใหม่เกี่ยวกับ UX ของรถได้ การกำหนดค่า หากนักพัฒนาแอปต้องการแก้ไขกฎการจำกัด (เช่น เพื่อให้สอดคล้องกับข้อกำหนด ความปลอดภัย) นักพัฒนาซอฟต์แวร์สามารถใช้ API ในการกำหนดการกำหนดค่าใหม่
API สำหรับตั้งค่าการกำหนดค่าจะยังคงอยู่ในการกำหนดค่าใหม่เท่านั้น กล่าวคือ การกำหนดค่าจะไม่มีผลทันที แต่การกำหนดค่าใหม่จะเป็น โหลดเมื่อบริการข้อจำกัด UX รีสตาร์ทและรถอยู่ในโหมด Park บริการรถยนต์ ตรวจสอบว่ารถอยู่ในโหมดจอดก่อนที่จะโหลดการกำหนดค่าใหม่ซ้ำ
นอกเหนือจากวิธีการบริการข้อจำกัด UX แบบใหม่แล้ว ยังมี API เพื่อสร้าง การกำหนดค่า ระบบจะแปลงสถานะของการเลือกเกียร์และความเร็วเป็น 1 ใน 3 สถานะการขับรถ ได้แก่
- จอดรถแล้ว เกียร์รถในสวนสาธารณะ
- ไม่มีการใช้งาน เกียร์ไม่อยู่ในจุดจอดและความเร็วเป็น 0
- กำลังย้าย เกียร์ไม่อยู่ในจุดจอดและความเร็วไม่ได้อยู่ที่ 0
หากต้องการดูวิธีที่แอปใช้สถานะการขับขี่ของรถและข้อจำกัด UX ที่เกี่ยวข้อง ดูการใช้สถานะการขับขี่รถและข้อจำกัด UX
การกำหนดค่าการจำกัดตามสถานะของไดรฟ์
Android จะจับคู่สถานะการขับขี่กับชุดข้อจำกัด UX เพื่อป้องกันการเสียสมาธิของผู้ขับขี่
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
- จอดรถแล้ว ไม่จำกัด
- ไม่มีการใช้งาน ไม่มีวิดีโอและไม่มีหน้าจอการกำหนดค่า
- กำลังย้าย ถูกจำกัดโดยสมบูรณ์ (จำเป็นต้องมีข้อจำกัดทั้งหมด)
การแมปที่แสดงข้างต้นมีการกำหนดค่าไว้ล่วงหน้าและกำหนดค่าเป็นทรัพยากร XML
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
จะบันทึกกฎในหน่วยความจำ จากนั้นบริการจะแมปสถานะการขับขี่ปัจจุบันกับข้อจำกัด UX
และเผยแพร่ข้อจำกัดในปัจจุบันไปยังทั้งระบบ
<!-- 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>
การกำหนดค่าสำหรับจอแสดงผลหลายจอ
โดยค่าเริ่มต้นจะไม่มีการใช้ข้อจำกัดกับจอแสดงผลเพิ่มเติม วิธีสร้างข้อจำกัด
ของการแสดงผลหลายรายการ ให้รวมแท็ก RestrictionMapping
ที่มีพารามิเตอร์
PhysicalPort สำหรับจอแสดงผลนั้น ระบบจะใช้ข้อจำกัดที่เหมาะสมกับแต่ละรายการโดยอัตโนมัติ
จอแสดงผล ในตัวอย่างต่อไปนี้ จอแสดงผลที่มีรหัสพอร์ต 1 และ 2 เป็นอุปกรณ์จริง
การกำหนดค่า:
<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>
การกำหนดค่าโหมดการจำกัด
คุณสามารถเลือกชื่อโหมด เช่น teen ในตัวอย่างต่อไปนี้ กำหนดค่าข้อจำกัดต่างๆ สำหรับโหมดเริ่มต้นและผู้โดยสาร (ก่อนหน้านี้ระบบรองรับเฉพาะโหมดผู้โดยสารเท่านั้น ดังนี้
<DrivingState car:state="idling">
<Restrictions car:mode="passenger" car:requiresDistractionOptimization="false" car:uxr="baseline"/>
<Restrictions car:requiresDistractionOptimization="true" car:uxr="no_video"/>
</DrivingState>
</Restrictions>
setRestrictionMode(@NonNull String mode)
ใน CarUxRestrictionsManager
(ก่อนหน้านี้คุณจะต้องใช้
setRestrictionMode(@CarUxRestrictionsManager.UxRestrictionMode int mode)
วิธีใน
CarUxRestrictionsManager)
API ของ CarUxRestrictionsConfiguration
ข้อจำกัดที่มี CarUxRestrictionsConfiguration
คลาสใหม่ CarUxRestrictionsConfiguration
แมป 1:1 กับ XML ปัจจุบันแล้ว
สคีมาการกำหนดค่า CarUxRestrictionsConfiguration
สามารถสร้างขึ้นด้วย CarUxRestrictions.
ซึ่งจะตรวจสอบการกำหนดค่า
จาก 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
ตั้งค่า CarUxRestrictionsConfiguration
สำหรับการขับขี่ครั้งถัดไปกับ CarUxRestrictionsManager
วิธีนี้ต้องได้รับสิทธิ์
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot(
CarUxRestrictionsConfiguration config);
คงการกำหนดค่าข้อจำกัด UX ใหม่
เมื่อมีการส่งการกำหนดค่าใหม่ บริการข้อจำกัด UX จะแสดงบูลีนเพื่อระบุว่า การกำหนดค่าใหม่ได้รับการบันทึกเรียบร้อยแล้วหรือไม่ การกำหนดค่าใหม่นี้จะใช้เมื่อ เครื่องสวมศีรษะแบบ ผสานรวม (IHU) จะรีสตาร์ทและจอดรถไว้ ข้อจำกัด UX ภายในบริษัท บริการประกอบด้วยการกำหนดค่า 2 ชุดดังนี้
- เวอร์ชันที่ใช้งานจริง แม้ว่าจะไม่บังคับ แต่การกำหนดค่านี้มักมีอยู่ UX บริการการจำกัดจะอ่านการกำหนดค่านี้เมื่อเริ่มต้น
- พร้อมใช้งาน นอกจากนี้ การกำหนดค่านี้จะไม่มีผลกับข้อจำกัด UX และได้รับการโปรโมตเป็นเวอร์ชันที่ใช้งานจริงเมื่อบริการรถเริ่มทำงานและเมื่อจอดรถ
รูปที่ 1 การกำหนดค่าเวอร์ชันที่ใช้งานจริง
จัดการความล้มเหลว
จนกว่าจะได้รับข้อมูลสถานะการขับรถจาก CarPropertyManager (ตัวอย่างเช่น ระหว่าง เปิดเครื่อง) ข้อจำกัด UX จะไม่มีผลบังคับใช้ ระบบจะทำงานเสมือนว่าสถานะการขับขี่คือ จอด
หากการอ่านการกำหนดค่าที่บันทึกไว้ล้มเหลว (เช่น ผลลัพธ์ SettingsNotFoundException) บริการการจำกัด UX กลับไปใช้โหมดที่จำกัดแบบฮาร์ดโค้ดโดยสมบูรณ์ ดังนี้
// Idling/moving state is fully restricted.
private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
สถานะการขับขี่และข้อจำกัดของผู้ใช้
เนื้อหาต่อไปนี้อธิบายการโต้ตอบที่แสดงในแผนภาพการออกแบบต่อไปนี้
รูปที่ 2 การโต้ตอบสถานะการขับรถ
พร็อพเพอร์ตี้ที่ใช้ดึงข้อมูลสถานะการขับรถ
ใช้ VehiclePropertyIds
3 รายการต่อไปนี้เพื่อสร้างสถานะการขับรถ
API ที่พร้อมใช้งานสำหรับแอป
รหัสจะอยู่ในตำแหน่งต่อไปนี้
โค้ด | ตำแหน่ง |
---|---|
CarUxRestrictionsManager API สาธารณะสำหรับลงทะเบียนการเปลี่ยนแปลงข้อจำกัด UX |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictions คำจำกัดความของข้อจำกัด UX |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager
วันที่ API ระบบสำหรับลงทะเบียนการเปลี่ยนแปลงสถานะการขับรถ |
/packages/services/Car/+/main/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
ในการจำลองสถานะการขับรถ โปรดดู การทดสอบ