ก่อนที่คุณจะดำเนินการต่อ โปรดอ่าน หลักเกณฑ์การเบี่ยงเบนความสนใจในการขับขี่
หน้านี้อธิบายกฎข้อจำกัดประสบการณ์ผู้ใช้รถยนต์ (UX) ที่คุณสามารถใช้เพื่อสร้างการกำหนดค่ากฎข้อจำกัด UX หลายรายการ (เช่น สหภาพยุโรปกับญี่ปุ่น) จากนั้นกำหนดว่าจะใช้กฎชุดใดในเวลาดำเนินการ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ CarUxRestrictions
บริการข้อจำกัด UX ของรถยนต์ช่วยให้นักพัฒนาสามารถกำหนดการกำหนดค่าข้อจำกัด UX ของรถยนต์ใหม่ได้ หากนักพัฒนาต้องการแก้ไขกฎข้อจำกัด (เช่น เพื่อให้เป็นไปตามมาตรฐานความปลอดภัยในท้องถิ่น) นักพัฒนาสามารถใช้ API เพื่อกำหนดการกำหนดค่าใหม่ได้
API ที่ใช้ตั้งค่าการกำหนดค่าจะยังคงอยู่ในการกำหนดค่าใหม่เท่านั้น กล่าวอีกนัยหนึ่ง การกำหนดค่าจะ ไม่มี ผลทันที แต่การกำหนดค่าใหม่จะถูกโหลดเมื่อรีสตาร์ทบริการข้อจำกัด UX และ รถอยู่ในที่จอดรถ ฝ่ายบริการรถจะตรวจสอบให้แน่ใจว่ารถอยู่ในที่จอดรถก่อนที่จะโหลดการกำหนดค่าใหม่
นอกเหนือจากวิธีการบริการข้อจำกัด UX ใหม่แล้ว ยังมี API ไว้เพื่อสร้างการกำหนดค่าด้วย สถานะของการเลือกเกียร์และความเร็วจะถูกแปลงเป็นหนึ่งในสามสถานะการขับขี่:
- ที่จอดรถ. เกียร์อินพาร์ค
- ไม่ได้ใช้งาน เกียร์ไม่เข้าจอดและความเร็วเป็นศูนย์
- การย้าย. เกียร์ไม่เข้าจอดและความเร็วไม่เป็นศูนย์
หากต้องการเรียนรู้ว่าแอปใช้สถานะการขับขี่ของรถยนต์และข้อจำกัด 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 สำหรับจอแสดงผลนั้น ข้อจำกัดที่เหมาะสมจะนำไปใช้กับแต่ละจอแสดงผลโดยอัตโนมัติ ในตัวอย่างต่อไปนี้ จอแสดงผลที่มี Port Ids 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)CarUxRestrictionsConfiguration API
ข้อจำกัดกับ CarUxRestrictionsConfiguration
คลาส CarUxRestrictionsConfiguration
ใหม่ถูกแมป 1:1 กับสกีมาการกำหนดค่า XML ปัจจุบัน CarUxRestrictionsConfiguration
สามารถสร้างได้ด้วย CarUxRestrictions. Builder
ซึ่งตรวจสอบการกำหนดค่าเมื่อ 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();
CarUxRestrictionsManager API
ตั้งค่า CarUxRestrictionsConfiguration
สำหรับไดรฟ์ถัดไปด้วย CarUxRestrictionsManager
วิธีการนี้ต้องได้รับอนุญาต Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
คงการกำหนดค่าข้อจำกัด UX ใหม่ไว้
เมื่อมีการส่งการกำหนดค่าใหม่ บริการข้อจำกัด UX จะส่งคืนบูลีนเพื่อระบุว่าบันทึกการกำหนดค่าใหม่สำเร็จแล้วหรือไม่ การกำหนดค่าใหม่นี้จะใช้เฉพาะเมื่อ Integrated Head Unit (IHU) รีสตาร์ทและรถจอดอยู่เท่านั้น ภายใน บริการข้อจำกัด UX มีการกำหนดค่าสองชุด:
- การผลิต. แม้ว่าเป็นทางเลือก แต่การกำหนดค่านี้มักปรากฏอยู่ บริการข้อจำกัด UX จะอ่านการกำหนดค่านี้เมื่อเริ่มต้น
- จัดฉาก. นอกจากนี้ การกำหนดค่านี้ไม่มีผลกับข้อจำกัด UX และเลื่อนระดับเป็นการใช้งานจริงเมื่อบริการรถเริ่มต้นและเมื่อจอดรถ
รูปที่ 1 การกำหนดค่าการผลิต
ที่อยู่ความล้มเหลว
จนกว่าจะได้รับข้อมูลสถานะการขับขี่จาก CarPropertyManager (เช่น ระหว่างการบูทเครื่อง) ข้อจำกัด UX จะไม่ถูกบังคับใช้ ระบบทำงานเสมือนว่าสถานะการขับขี่อยู่ที่จอดอยู่
หากการอ่านการกำหนดค่าที่บันทึกไว้ล้มเหลว (เช่น ผลลัพธ์ของ SettingNotFoundException) บริการข้อจำกัด UX จะกลับไปอยู่ในโหมดที่เข้ารหัสแบบตายตัวและถูกจำกัดโดยสมบูรณ์:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
สถานะการขับขี่และข้อจำกัดของผู้ใช้
เนื้อหาต่อไปนี้อธิบายการโต้ตอบที่แสดงในไดอะแกรมการออกแบบต่อไปนี้:
รูปที่ 2 การขับเคลื่อนการโต้ตอบของรัฐ
คุณสมบัติที่ใช้ในการรับสถานะการขับขี่
ใช้ VehiclePropertyIds
สามรายการต่อไปนี้เพื่อรับสถานะการขับขี่:
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 |
หากต้องการจำลองสถานะการขับขี่ โปรดดูที่ การทดสอบ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-04-29 UTC