לפני שתמשיך, עיין בהנחיות הסחת דעת לנהיגה .
מאמר זה מתאר את כללי ההגבלות של חוויית משתמש ברכב (UX) שבהם תוכל להשתמש כדי ליצור תצורות כללים מרובות של הגבלות UX (לדוגמה, האיחוד האירופי מול יפן) ולאחר מכן לקבוע איזו קבוצת כללים להחיל בזמן הריצה. למידע נוסף, ראה CarUxRestrictions .
שירות Car UX Restrictions מאפשר למפתחים להגדיר תצורה חדשה של Car UX Restrictions. אם מפתח ירצה לשנות את כללי ההגבלה (כגון לעמוד בתקני בטיחות מקומיים), המפתח יכול להשתמש ב-API כדי להגדיר את התצורה החדשה.
ה-API להגדרת התצורה נמשך בתצורה החדשה בלבד. במילים אחרות, התצורה לא נכנסת לתוקף באופן מיידי. במקום זאת, התצורה החדשה נטענת כאשר שירות מגבלות ה-UX מופעל מחדש והמכונית בחנייה. שירות הרכב מבטיח שהמכונית נמצאת בחנייה לפני טעינת התצורה החדשה.
בנוסף לשיטת השירות החדשה של מגבלות UX, ממשקי API מסופקים לבניית התצורה. מצב בחירת ההילוכים והמהירות מומר לאחד משלושת מצבי נהיגה:
- חונה . ציוד בפארק.
- בטלה . הילוך לא בפארק והמהירות היא אפס.
- מעבר דירה . הילוך לא בפארק והמהירות לא אפס.
כדי ללמוד כיצד יישומים צורכים את מצב הנהיגה של מכונית ואת הגבלות ה-UX המתאימות, ראה צריכת מצב נהיגה ברכב והגבלות UX .
תצורת הגבלה מבוססת על מצבי כונן
כדי למנוע הסחת דעת של הנהג, אנדרואיד ממפה את מצב הנהיגה לקבוצה של הגבלת 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>
תצורות עבור מצבי הגבלה
כעת תוכל לבחור כל שם עבור המצב, כגון עשרה . בדוגמה הבאה, הגבלות שונות מוגדרות עבור ברירת מחדל ומצבי נוסעים (בעבר, רק מצב נוסעים נתמך:
<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. 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();
ממשק API של CarUxRestrictionsManager
הגדר CarUxRestrictionsConfiguration
עבור הכונן הבא עם CarUxRestrictionsManager
. שיטה זו דורשת הרשאה, Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION
.
public synchronized boolean saveUxRestrictionsConfigurationForNextBoot( CarUxRestrictionsConfiguration config);
התמיד בתצורת מגבלות UX חדשה
כאשר מועברת תצורה חדשה, שירות הגבלות UX מחזיר ערך בוליאני כדי לציין אם התצורה החדשה נשמרה בהצלחה. תצורה חדשה זו משמשת רק כאשר יחידת הראש המשולבת (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 ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2023-11-30 (שעון UTC).