जारी रखने से पहले, ड्राइविंग के दौरान ध्यान भटकाने वाले ऐप्लिकेशन के लिए बने दिशा-निर्देश पढ़ें.
इस पेज पर, कार के उपयोगकर्ता अनुभव (यूएक्स) से जुड़ी पाबंदियों के नियमों के बारे में बताया गया है. इनका इस्तेमाल करके, यूएक्स से जुड़ी पाबंदियों के नियमों के कई कॉन्फ़िगरेशन बनाए जा सकते हैं. उदाहरण के लिए, यूरोपीय संघ बनाम जापान. इसके बाद, यह तय किया जा सकता है कि रन टाइम में नियमों का कौनसा सेट लागू करना है. ज़्यादा जानकारी के लिए, CarUxRestrictions देखें.
Car UX Restrictions सेवा की मदद से डेवलपर, Car UX Restrictions का नया कॉन्फ़िगरेशन तय कर सकते हैं. अगर डेवलपर को पाबंदी के नियमों में बदलाव करना है (जैसे, स्थानीय सुरक्षा मानकों का पालन करने के लिए), तो डेवलपर एपीआई का इस्तेमाल करके नया कॉन्फ़िगरेशन तय कर सकता है.
कॉन्फ़िगरेशन सेट करने वाला एपीआई, सिर्फ़ नए कॉन्फ़िगरेशन में बना रहता है. दूसरे शब्दों में, कॉन्फ़िगरेशन तुरंत लागू नहीं होता. इसके बजाय, UX Restrictions सेवा के रीस्टार्ट होने और कार के पार्क मोड में होने पर, नया कॉन्फ़िगरेशन लोड होता है. कार की सेवा यह पक्का करती है कि नया कॉन्फ़िगरेशन फिर से लोड करने से पहले कार पार्क की गई हो.
UX की पाबंदियों से जुड़ी नई सेवा के तरीके के अलावा, कॉन्फ़िगरेशन बनाने के लिए एपीआई उपलब्ध कराए जाते हैं. गियर चुनने और स्पीड की स्थिति को, ड्राइविंग की तीन स्थितियों में से किसी एक में बदल दिया जाता है:
- पार्क किया गया. गियर को पार्क मोड पर रखें.
- कुछ न करना. कार पार्क मोड में नहीं है और उसकी स्पीड शून्य है.
- ट्रांसफ़र किया जा रहा है. गियर पार्क मोड में न हो और स्पीड शून्य न हो.
ऐप्लिकेशन, कार की ड्राइविंग की स्थिति और उससे जुड़ी उपयोगकर्ता अनुभव की पाबंदियों का इस्तेमाल कैसे करते हैं, यह जानने के लिए कार की ड्राइविंग की स्थिति और उपयोगकर्ता अनुभव की पाबंदियों का इस्तेमाल करना लेख पढ़ें.
ड्राइविंग की स्थितियों के आधार पर पाबंदी का कॉन्फ़िगरेशन
ड्राइवर का ध्यान भटकने से रोकने के लिए, Android, ड्राइविंग की स्थिति को उपयोगकर्ता अनुभव से जुड़ी पाबंदियों के सेट /packages/services/Car/+/android16-qpr1-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java से मैप करता है
- पार्क किया गया. कोई पाबंदी नहीं है.
- कुछ न करना. कोई वीडियो नहीं है और न ही कॉन्फ़िगरेशन स्क्रीन है.
- ट्रांसफ़र किया जा रहा है. पूरी तरह से प्रतिबंधित (सभी पाबंदियां ज़रूरी हैं).
ऊपर दिखाई गई मैपिंग पहले से तय होती है और इसे एक्सएमएल संसाधन के तौर पर कॉन्फ़िगर किया जाता है. इसके बाद, /packages/services/Car/+/android16-qpr1-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java नियमों को मेमोरी में सेव करता है. इसके बाद, सेवा, ड्राइविंग की मौजूदा स्थिति को उपयोगकर्ता अनुभव से जुड़ी पाबंदियों के साथ मैप करती है. साथ ही, मौजूदा पाबंदियों को पूरे सिस्टम पर ब्रॉडकास्ट करती है.
<!-- 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>पाबंदी मोड के लिए कॉन्फ़िगरेशन
मोड के लिए कोई भी नाम चुना जा सकता है, जैसे कि किशोर. यहां दिए गए उदाहरण में, डिफ़ॉल्ट और पैसेंजर मोड के लिए अलग-अलग पाबंदियां कॉन्फ़िगर की गई हैं. इससे पहले, सिर्फ़ पैसेंजर मोड के लिए पाबंदियां कॉन्फ़िगर की जा सकती थीं:
<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) तरीके का इस्तेमाल किया जाता था).
CarUxRestrictionsConfiguration API
CarUxRestrictionsConfiguration के साथ पाबंदियां
नई क्लास CarUxRestrictionsConfiguration को मौजूदा XML कॉन्फ़िगरेशन स्कीमा के साथ 1:1 मैप किया गया है. 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();CarUxRestrictionsManager API
CarUxRestrictionsManager के साथ अगली ड्राइव के लिए CarUxRestrictionsConfiguration सेट करें. इस तरीके के लिए अनुमति की ज़रूरत होती है,
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot(
CarUxRestrictionsConfiguration config);यूएक्स रिस्ट्रिक्शन के नए कॉन्फ़िगरेशन को सेव करना
नया कॉन्फ़िगरेशन पास किए जाने पर, UX Restrictions सेवा एक बूलियन वैल्यू दिखाती है. इससे यह पता चलता है कि नया कॉन्फ़िगरेशन सेव हुआ है या नहीं. इस नए कॉन्फ़िगरेशन का इस्तेमाल सिर्फ़ तब किया जाता है, जब इंटिग्रेटेड हेड यूनिट (आईएचयू) रीस्टार्ट हो और कार पार्क की गई हो. UX Restrictions सेवा में, कॉन्फ़िगरेशन के दो सेट होते हैं:
- प्रोडक्शन. हालांकि, इस कॉन्फ़िगरेशन का इस्तेमाल करना ज़रूरी नहीं है, लेकिन अक्सर इसका इस्तेमाल किया जाता है. UX की पाबंदियां लगाने वाली सेवा, शुरू होने पर इस कॉन्फ़िगरेशन को पढ़ती है.
- स्टेज किया गया. यह कॉन्फ़िगरेशन भी ज़रूरी नहीं है. इसका, उपयोगकर्ता अनुभव से जुड़ी पाबंदियों पर कोई असर नहीं पड़ता. साथ ही, जब कार सेवा शुरू होती है और जब कार पार्क की जाती है, तब इसे प्रोडक्शन में प्रमोट किया जाता है.

पहली इमेज. प्रोडक्शन कॉन्फ़िगरेशन
पते की पुष्टि नहीं हो सकी
जब तक CarPropertyManager से ड्राइविंग की स्थिति की जानकारी नहीं मिलती (उदाहरण के लिए, बूट-अप के दौरान), तब तक यूज़र एक्सपीरियंस से जुड़ी पाबंदियां लागू नहीं होंगी. सिस्टम इस तरह काम करता है जैसे गाड़ी पार्क की गई हो.
अगर सेव किए गए कॉन्फ़िगरेशन को पढ़ने में समस्या आती है (उदाहरण के लिए, SettingNotFoundException नतीजे), तो UX Restrictions सेवा, हार्ड-कोड किए गए, पूरी तरह से प्रतिबंधित मोड पर वापस आ जाती है:
// Idling/moving state is fully restricted. private static CarUxRestrictionsConfiguration generateDefaultConfig() {}
ड्राइविंग की स्थिति और उपयोगकर्ता से जुड़ी पाबंदियां
यहां दिए गए कॉन्टेंट में, इस डिज़ाइन डायग्राम में दिखाए गए इंटरैक्शन के बारे में बताया गया है:

दूसरी इमेज. गाड़ी चलाने के दौरान की स्थिति से जुड़े इंटरैक्शन
ड्राइविंग की स्थिति का पता लगाने के लिए इस्तेमाल की गई प्रॉपर्टी
ड्राइविंग की स्थिति का पता लगाने के लिए, इन तीन VehiclePropertyIds का इस्तेमाल करें:
ऐप्लिकेशन के लिए उपलब्ध एपीआई
यह कोड इन जगहों पर मौजूद होता है:
| कोड | जगह की जानकारी |
|---|---|
CarUxRestrictionsManagerयूज़र एक्सपीरियंस (यूएक्स) से जुड़ी पाबंदियों में हुए बदलावों के लिए रजिस्टर करने के लिए, सार्वजनिक एपीआई. |
/packages/services/Car/+/android16-qpr1-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarUxRestrictionsयूएक्स से जुड़ी पाबंदियों की परिभाषा. |
/packages/services/Car/+/android16-qpr1-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
CarDrivingStateManager
गाड़ी चलाने के समय की स्थिति में होने वाले बदलावों के लिए रजिस्टर करने वाले सिस्टम एपीआई. |
/packages/services/Car/+/android16-qpr1-release/car-lib/src/android/car/drivingstate/CarDrivingStateManager.java
|
ड्राइविंग की स्थितियों को सिम्युलेट करने के लिए, टेस्टिंग देखें.