הגבלות על חווית משתמש ברכב

לפני שתמשיך, עיין בהנחיות הסחת דעת לנהיגה .

דף זה מתאר את כללי ההגבלות על חוויית משתמש ברכב (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

כדי לדמות מצבי נהיגה, ראה בדיקה .