הגדרות הרכב (packages/apps/Car/Settings
) מסופקות במיוחד עבור
Android Automotive OS (AAOS). הגדרות הרכב שונות מהגדרות הטלפון
(packages/apps/Settings
). בהגדרות הרכב יש כמה הגדרות מוכרות לטלפון,
ההגדרות של הרכב מספקות ממשק משתמש חזותי מותאם לרכב, אופטימיזציה של הסחות הדעת של הנהג,
ומספר נקודות כניסה רבות ליצרני ציוד מקורי (OEM).
בנוסף לסקירה הכללית של הגדרות הרכב המופיעות בהמשך, ניתן לעיין במאמרים הבאים נושאים למידע נוסף על 'הגדרות רכב':
- הוספת הגדרות לרכב
- ארגון מחדש של הגדרות הרכב
- אופטימיזציה של הסחות דעת בהגדרות הרכב
- הוספת חיפוש לאינדקס בהגדרות הרכב
- התאמה אישית של החלונית הכפולה
ארכיטקטורה והנחיות
רוב הדפים בהגדרות הרכב מוטמעים כסדרת מקטעים
שמרחיבות את SettingsFragment, שלכל אחת מהן מוגדרת פעילות משלו
CarSettingActivity. הפעילויות הסטטיות האלה מורחבות מ-BaseCarSettingsActivity. למרות שיש מספר יוצאים מן הכלל לכלל הזה, כמו מקטעים מיוחדים שמתרחבים
BaseFragment במקום SettingsFragment
ופעילויות מסוימות שנמצאות מחוץ ל-CarSettingActivity, צריך להתייחס לכולן כאל חריגים (לא כדפוסים שצריך לפעול על פיהם).
העדפות סטטיות
העדפה סטטית מוגדרת ב-XML באמצעות העדפה
או CarUiPreference
התיוג. הטמעה של SettingsFragment
משתמשת באופרטור getPreferenceScreenResId()
כדי להגדיר איזה קובץ XML מכיל את הרשימה הסטטית של ההעדפות להצגה.
העדפות דינמיות
העדפות דינמיות משתמשות ב-PreferenceGroup תג או יישום של PreferenceGroup.
באפליקציה CarSettings, ההעדפות הדינמיות מייצגות קבוצה רגילה של העדפות שמפנות את המשתמש לדפים נוספים בהגדרות CarSettings, אבל שנוספו דרך Preference שלט רחוק, במקום ב-XML. לדוגמה, האפשרות 'ניהול מקלדות' העדפה בקטע 'שפות' העדפת קלט שמוסיפה קלט באופן דינמי לדף ההעדפות, על סמך אם שיטות הקלט האלה מותר או לא מותר.
סרגלי פעולה
בחלק העליון של כל מסך הגדרות יש סרגל פעולות, שיכול להכיל סמל "back" ניווט, כותרת מסך וווידג'טים משלימים של פעולות (לדוגמה, לחצנים ומתגים). סרגלי הפעולות האלה דומים לסרגל הפעולות שסופקו על ידי Android, אלא למעשה תצוגות מותאמות אישית. ב-Android מגרסה 11 ואילך, בסרגל הכלים כלול בפריסה הבסיסית של השלדה, שמכילה את התצוגות של סרגל כלים ופריסת מסגרות לשאר תוכן האפליקציה.
ווידג'טים של פעולות משלימים הם מחלקות של תפריט פריטים, וצריך ליצור אותן ב
onCreate
של SettingsFragment
המתאים או
BaseFragment
. מאפיינים כמו חשיפה, מצב וכן הלאה
נשלטים על ידי מגדירים בלוגיקה של SettingsFragment
.
// ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override protected List<MenuItem> getToolbarMenuItems() { return Collections.singletonList(mClearConfirmButton); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mButton = new MenuItem.Builder(getContext()) .setTitle(R.string.text) .setOnClickListener(mOnClickListener) .setUxRestrictions(CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP) .build(); } private void updateState() { button.setVisible(false); } }
סרגלי הפעולות כוללים תמיכה
אופטימיזציה של הסחות דעת בהגדרות הרכב.
צריך להגדיר את הגבלות חוויית המשתמש בשדה MenuItem.Builder
כשיוצרים את הקובץ.
בקרי בקרה של העדפות
כל דף הגדרות יכול לכלול העדפות.
בתמונה הבאה אפשר לראות את הקשר בין הרכיבים:
איור 1. רכיבי CarSettings
ה-PreferenceController
הוא רכיב שמודע למחזור החיים שעוזר
כוללים את הלוגיקה העסקית לגבי העדפות ספציפיות.
אפשר לצרף את PreferenceControllers
להעדפה הרלוונטית רק דרך
XML.
// example_settings_fragment.xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/example_settings_title"> <Preference android:key="@string/pk_example_preference_key" android:title="@string/example_preference_title" settings:controller="com.android.car.settings.example.ExamplePreferenceController"/> </PreferenceScreen>
ההגדרות של הרכב מונעות באופן מפורש את היצירה של PreferenceController
באמצעות קוד כדי להקל על שינוי היררכיית ההגדרות תוך שימוש מינימלי
בקוד Java.
יכול להיות שנדרשים נתונים דינמיים ל-PreferenceController
כדי לפעול באופן תקין. לדוגמה, PreferenceController
שנכבה
שהתראות לאפליקציה צריכות לדעת באיזו אפליקציה לפעול.
מכיוון ש-PreferenceControllers
תמיד מוגדר ב-XML, אין
לספק ארגומנטים נוספים של constructor. במקום זאת, הערכים הנוספים האלה
סופקו באמצעות מגדירים ציבוריים ב-PreferenceController
ומוגדרים באמצעות
use(...)
מהשיטה SettingsFragment
.
// ExamplePreferenceController.java public class ExamplePreferenceContorller extends PreferenceController<Preference> { private ExampleArg mExampleArg; public ExamplePreferenceController(...) { ... } public void setExampleArg(ExampleArg exampleArg) { mExampleArg = exampleArg; } } // ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override @XmlRes protected int getPreferenceScreenResId() { Return R.xml.example_settings_fragment; } @Override public void onAttach(Context context) { ExampleArg arg = (ExampleArg) getArguments().getSerializeable(ARG_KEY); ExamplePreferenceController controller = use(ExamplePreferenceController.class, R.string.pk_example_preference_key); controller.setExampleArg(arg); } }
ככל שמשתמשים בשיטה use(...)
לעיתים קרובות יותר, כך קשה יותר לשמור עליה
המטרה המקורית של היכולת לארגן מחדש את היררכיית ההגדרות עם שינויים קלים בלבד
בקוד Java, מפני שצריך להעתיק חלקים גדולים מקוד המקטע הקיים
את המקטע החדש שנוצר. אחת הדרכים לצמצם את הקושי היא:
- צמצום השימוש ב-
use(...)
. - כדאי לשמור כל קריאה אל
use(...)
בקטע אחד בקטע (לדוגמה, בשיטהonAttach()
).
טיפול בכוונות
כל כוונות שצריך לטפל בהן באפליקציית ההגדרות של הרכב, מניפסט חדש. מנגנוני Intent מוגדרים בדרך כלל ומטופלים כמו רוב האפליקציות הרגילות ל-Android, עם כל מסנני הפעילויות ומסנני ה-Intent שמוגדרים במניפסט.
שינוי מקטע השורש
ניתן להציג או להסתיר את הסמל 'יציאה' באמצעות config_show_settings_root_exit_icon
.
התאמה אישית של העיצוב
התאמה אישית של מאפיינים ומשאבים אחרים
באפליקציית ההגדרות של הרכב משתמשים בעיקר בCarSettingTheme
,
שהיא הרחבה של Theme.CarUi
. העיצוב הזה משמש לסטנדרטיזציה של
המראה והתחושה של אפליקציות המערכת כדי להבטיח עקביות במערכת.
התאמה אישית של ההעדפות
התאמה אישית של ההעדפות כוללת את המיקומים הנוספים הבאים:
- הפריסה של חלק מסיווגי ההעדפה הבסיסית מוגדרת ב-
car_preference
ובשכבת-על לפיתוח מכוניות. כל פריסות להתאמה אישית של סיווגי ההעדפה הבסיסית יכולות להיות הוחלף כאן. - בהגדרות הרכב נעשה שימוש בהעדפות מותאמות אישית מסוימות שמוגדרות בעיקר
common
חבילה. יש להוסיף את הפרטים האלה כשכבת-על במודול 'הגדרות הרכב' בנפרד את סיווגי ההעדפה הבסיסית.