โปรดอ่านหลักเกณฑ์การรบกวนการขับรถก่อนดำเนินการต่อ
หน้านี้อธิบายกฎข้อจำกัดประสบการณ์ของผู้ใช้รถยนต์ (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>คุณจะใช้ API เพื่อตั้งชื่อสตริงให้กับโหมดนี้ได้ ตัวอย่างเช่น พารามิเตอร์
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
|
ในการจำลองสถานะการขับรถ โปรดดู การทดสอบ