تنفيذ واجهة مستخدم النظام

يوفّر Android Automotive واجهة مستخدم جديدة للنظام تم تطويرها خصيصًا للمركبات. إنّ معظم مكونات واجهة مستخدم النظام مرتبطة ارتباطًا وثيقًا بخدمات إطار العمل. يشير واجهة مستخدم النظام إلى أي عنصر معروض على الشاشة ليس جزءًا من أحد التطبيقات. وواجهة مستخدم Automotive (في حزمة عنصر CarSystemUI) هي إضافة إلى واجهة مستخدم Android (في حزمة System UI)، وقد تم تخصيصها للمركبات على وجه التحديد.

ما هي واجهة مستخدم النظام؟

تشمل المكونات الخاصة بواجهة المستخدم في نظام المركبات ما يلي:

المكوّن الوصف
واجهة مستخدم شاشة القفل الشاشة التي يتم من خلالها مصادقة المستخدمين على حساب مستخدم معيّن
شريط التنقّل شريط النظام الذي يمكن وضعه على يمين أو يسار أو أسفل الشاشة والذي يمكن أن يتضمّن أزرارًا للتنقّل إلى تطبيقات مختلفة وتبديل لوحة الإشعارات، وتوفير عناصر التحكّم في المركبة (مثل نظام التدفئة والتهوية وتكييف الهواء) يختلف ذلك عن تنفيذ واجهة مستخدم نظام Android ، الذي يقدّم أزرار الرجوع والصفحة الرئيسية ومجموعة التطبيقات.
شريط الحالة شريط النظام الذي يتم وضعه على طول الشاشة ويعمل كشريط تنقّل يوفّر شريط الحالة أيضًا وظائف لدعم ما يلي:
  • رموز الاتصال ويشمل ذلك البلوتوث وWi-Fi ونقطة الاتصال/الاتصال بالأجهزة الجوّالة.
  • لوحة الإشعارات المنسدلة على سبيل المثال، التمرير سريعًا من أعلى الشاشة لأسفلها
  • الإشعارات الفورية (HUN)
واجهة مستخدم النظام يشير إلى أي عنصر معروض على الشاشة ليس جزءًا من تطبيق.
واجهة مستخدم "تبديل المستخدمين" شاشة يمكن للمستخدم من خلالها اختيار مستخدم آخر
واجهة مستخدم مستوى الصوت مربع الحوار الذي يظهر عندما يستخدم السائق أزرار الصوت الخارجية لتغيير مستوى الصوت على جهاز

كيف يعمل واجهة المستخدم النظام؟

واجهة مستخدم النظام هي تطبيق Android يتم تشغيله عند تشغيل الجهاز. يتم بدء التطبيق من خلال عكسه بواسطة SystemServer. في ما يلي نقاط الدخول الأكثر صلةً بالجانب المرئي للمستخدم من واجهة المستخدم للنظام. استخدِم هذه المكوّنات لتخصيص واجهة مستخدم نظام Android للاستفادة من الإمكانات المخصّصة للسيارات.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI هي امتداد لحزمة System UI، ما يعني أنّه يمكن استخدام الفئات والمواد الموارد في حزمة System UI وإلغاء مفعولها باستخدام حزمة CarSystemUI.

تخصيص واجهة مستخدم النظام

النوافذ المتراكبة

على الرغم من أنّه يمكنك تعديل الرمز المصدر لنظام التشغيل Android لتخصيص واجهة المستخدم للنظام، فإنّ إجراء ذلك يجعل من الصعب والمعقد تطبيق تحديثات Android المستقبلية. بدلاً من ذلك، يتيح نظام التشغيل Android استخدام دليل تراكب يتيح لك استبدال ملفات الموارد بدون تعديل رمز المصدر. في نظام إنشاء Android، يتجاهل نظام التراكب الملفات بطريقة تتم إدارتها. يتم تحديد جميع الملفات المعدَّلة بوضوح بدون التنقّل في شجيرة رمز AOSP المصدر بالكامل.

يجب وضع ملفات التراكب في الدليل PRODUCT_PACKAGE_OVERLAYS ويجب أن تحتوي على المجلدات الفرعية نفسها تمامًا مثل بنية الجذر الأصلية في AOSP. بالنسبة إلى Android 10 أو الإصدارات الأحدث، يتم ضبط PRODUCT_PACKAGE_OVERLAYS على:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

تستخدم واجهة مستخدم نظام السيارات موارد من واجهة مستخدم النظام وحِزم CarSystemUI، ما يعني أنّه يمكن إلغاء الموارد من كل موقع جغرافي باستخدام تراكبات للتأثير في مظهر واجهة مستخدم نظام السيارات وأسلوبها.

لاستبدال ملف، يمكنك تكرار بنية الدليل للملف الذي يتم استبداله في ملف /overlay الذي حدّدته، ثم تضمين الملف البديل في ذلك الدليل. على سبيل المثال، لاستبدال:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

أضِف ملف super_status_bar.xml البديل في المسار التالي:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

لاستبدال frameworks/base/packages/SystemUI/res/values/config.xml، (في واجهة مستخدم النظام، وليس CarSystemUI)، أضِف ملف config.xml البديل إلى:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

أو

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

في ما يلي أوصاف نقطتَي الدخول الأساسيتَين للتخصيص.

يمكن أن يتضمّن واجهة مستخدم نظام المركبات ثلاثة أشرطة تنقّل على يمين الشاشة وأسفلها ويسارها. يتم تفعيل أو إيقاف مستوى رؤية كل شريط نظام باستخدام الإعدادات التالية:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

يحتوي كل شريط على حالتَي الإعداد والإعداد غير المكتمل، ويمكن تخصيصهما من خلال تراكب ملفات التنسيق ذات الصلة:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (تنسيق شريط التنقّل السفلي)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

يجب أن تحتوي هذه التنسيقات على com.android.systemui.car.systembar.CarSystemBarView في المستوى الأعلى، ويمكن أن تتضمن أيّ جداول عرض أخرى ضرورية. يمكن تضمين الأزرار داخل أشرطة التنقّل باستخدام com.android.systemui.car.systembar.CarSystemBarButton.

ويتم تضخيم هذه المشاهدات في CarSystemBar#createSystemBar، إذا تم إعداد الجهاز بشكل صحيح لمستخدم معيّن.

شريط الحالة

يمكنك اعتبار شريط الحالة بمثابة شريط تنقّل يتضمّن وظائف إضافية. على عكس شريط التنقل، لا يحتوي شريط الحالة على علامة لإيقاف تشغيله. يمكنك تعديل شريط الحالة باستخدام:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

يجب أن تحتوي هذه التنسيقات على com.android.systemui.statusbar.car.CarNavigationBarView في المستوى الأعلى. يحتوي شريط الحالة على رموز الحالة. لتغيير حجم رمز، يمكنك تغيير حجمه بشكلٍ موحّد باستخدام عامل مقياس بدلاً من تحديد حجم معيّن. على سبيل المثال، فيملف التمويه /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml، أضِف السمات التالية لمضاعفة حجم الرموز:

<resources>
    <!-- The amount by which to scale up the status bar icons.-->
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item>
</resources>

يقع شريط الحالة في طبقة خاصة للنوافذ تتضمّن أيضًا لوحة الإشعارات ومبدّل المستخدمين والإشعارات المنبثقة (HUN) وشاشة القفل. يتم تضمين التنسيقات المختلفة لهذه العناصر في super_status_bar.xml.

تغييرات في رمز المصدر لواجهة مستخدم النظام

قد لا توفّر العناصر التي تظهر على سطح الشاشة المرونة اللازمة لتخصيص سلوك واجهة المستخدم للنظام بشكل كافٍ.

تنبيه: من الصعب تعديل التغييرات التي تم إجراؤها على رمز مصدر Android في الإصدارات الأحدث من Android. ننصحك بشدة بتوسيع نطاق رمز واجهة المستخدم لنظام السيارات بدلاً من تعديل الرمز مباشرةً. بهذه الطريقة، يمكن ترقية رمز المصدر الأساسي لواجهة المستخدم في نظام السيارات بأقل قدر من تعارضات الدمج لأنّه يتم تنفيذ جميع عمليات التخصيص من خلال مساحات عرض واجهات برمجة التطبيقات المعروفة.

يمكن تخصيص معظم جوانب واجهة المستخدم للنظام من خلال نقطتَي الدخول التاليتَين:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

على سبيل المثال، إذا أنشأت فئة باسم com.android.systemui.statusbar.car.custom.CustomCarStatusBar، والتي تمتد من CarStatusBar، عدِّل config_statusBarComponent للإشارة إلى هذا المكوّن الجديد. يتيح توسيع نطاق هذه الفئة تخصيص معظم العناصر التي تتعلّق بشريط النظام ومنطق الإشعارات.

وبالمثل، يمكنك إنشاء CustomCarSystemUIFactory ووضعه في config_systemUIFactoryComponent. استخدِم هذه الفئة لتعديل وظائف VolumeUI وشاشة القفل.

تخصيص تبديل المستخدمين وفتح قفل الجهاز

توضّح المادة التالية كيفية تخصيص تجربة تبديل المستخدم.

العبارة الوصف
تأمين المفاتيح مربّع حوار في وضع ملء الشاشة لمنع التفاعل غير المقصود مع التطبيق في المقدّمة يحمي خصوصية كل مستخدم عند إعداد مستخدمين متعدّدين.
مربّع حوار التحميل شاشة التحميل التي تظهر عند التبديل بين المستخدمين
شاشة القفل، الشاشة المانعة شاشة تطلب من المستخدم إدخال رقم تعريف شخصي أو نقش أو كلمة مرور
المستخدم مستخدم Android
أداة اختيار المستخدم شاشة اختيار المستخدم التي تظهر عند تشغيل الجهاز
أداة تبديل المستخدمين مبدِّل المستخدمين الذي يظهر عند تبديل الشاشات من "الإعدادات السريعة"

تخصيص تبديل المستخدمين

شاشة القفل وشاشة المنع

في نظام التشغيل Android Automotive، لا يتم عرض شاشة Keyguard التي تتضمّن أداة اختيار المستخدمين إلا عند نقر المستخدم على زر "إلغاء" على شاشة القفل. تظهر شاشة "قفل الشاشة" أدناه.

شاشة تأمين المفاتيح

الشكل 1: شاشة قفل الشاشة

يتم عرض شاشة قفل تتضمّن شاشة انتظار عندما يختار المستخدم نوع خصوصية لمحاولة فتح قفل الجهاز، كما هو موضّح أدناه.

شاشة القفل

الشكل 2: شاشة القفل:

عندما يكون القفل مضبوطًا على تفعيل أو إيقاف التشغيل يدويًا، اتّبِع التعليمات التالية:

adb shell input keyevent 26

أداة اختيار المستخدم

يتم عرض شاشة اختيار المستخدم عند إعادة تشغيل جهاز متكامل في شريط حالة واجهة مستخدم النظام بالسيارة و"خرائط Google". لمزيد من المعلومات، يُرجى الاطّلاع على FullscreenUserSwitcher.

شاشة التحميل

الشكل 3: شاشة "أداة اختيار المستخدمين"

يمكن تخصيص تنسيق هذه الشاشة في car_fullscreen_user_switcher.xml.

شاشة التحميل

يتم عرض شاشة التحميل عند تبديل المستخدم، بغض النظر عن نقطة الدخول. على سبيل المثال، من خلال أداة اختيار المستخدمين أو شاشة "الإعدادات". شاشة التحميل هي جزء لا يتجزأ من واجهة مستخدم النظام في إطار العمل وتتم ربطها بالفئة العامة بعنوان CarUserSwitchingDialog. اطّلِع على الشكل 3 أعلاه للاطّلاع على مثال.

يمكن تخصيص المظهر باستخدام Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog.

لإعداد حساب مستخدم Android، يتيح مسار معالج الإعداد الأولي للسائق إعداد اسم مستخدم له. إذا ربط السائق مستخدم Android بحساب Google، يتم اختيار اسم المستخدم من ذلك الحساب. ومع ذلك، إذا حدّد السائق اسمًا، مثل "سائق أ"، ثم ربط اسم المستخدم هذا لاحقًا بحسابه على Google باسم "مايا"، لن يتم تغيير الاسم الذي تم تحديده في الأصل ("سائق أ") لأنّه تم ضبط هذا الاسم صراحةً. يمكن للسائق تغيير الاسم في قائمة "الإعدادات" فقط.

يمكن تخصيص التنسيق في car_user_switching_dialog.xml.

يمكن لمصنّعي المعدّات الأصلية إخفاء شريط الحالة والتنقّل باستخدام المظهر المُسمى NoActionBar.Fullscreen. (هذه هي واجهة المستخدم الأصلية للنظام، وتم تعديلها لواجهة المستخدم المرجعية للسيارة). لمزيد من المعلومات، يمكنك الاطّلاع على التخصيص.

على الرغم من أنّ المصنّعين الأصليّين للأجهزة يمكنهم توفير نقاط دخول لواجهة المستخدم للتبديل بين المستخدمين، يمكن أن تكون النتائج في بعض الأحيان غير مرغوب فيها. في حال حدوث ذلك:

  1. ينشئ المصنّع الأصلي للجهاز شاشة التحميل (أو مربّع الحوار) المخصّص ويعرضه.
    • بالنسبة إلى تجربة المستخدم، يشغِّل المصنّع الأصلي للجهاز شاشة التحميل المخصّصة عندما يختار المستخدم طريقة التبديل، والتي يمكن إخفاؤها عند اكتمال عملية التبديل.
    • على المصنّع الأصلي للجهاز ضبط مهلة الأولوية وفقًا لإعداداته المفضّلة. على سبيل المثال، نوع نافذة ذات أولوية أعلى. الأولوية لا يمكن أن تتجاوز الأولوية الخاصة بشاشة القفل.
  2. يضبط المصنّع الأصلي للمركبة config_customUserSwitchUi=true في إطار العمل الأساسي config.xml كما هو موضّح في config_customuserswitchui. نتيجةً لذلك، لا يعرض إطار العمل CarUserSwitchingDialog.

تخصيص شاشة القفل

تشكّل شاشة القفل جزءًا لا يتجزأ من واجهة المستخدم للنظام، ويمكن لمصنّع الجهاز الأصلي تخصيصها. لتخصيص المسار، ابدأ برمز frameworks/base/packages/CarSystemUI/.

تخصيص عملية إعداد المستخدم لأول مرة

يُجري "معالج الإعداد" عملية إعداد المستخدم لأول مرة. ويمكن أيضًا تخصيص هذه الميزة. يمكنك استخدام UserManager APIs لإنشاء مستخدم. في بعض الحالات، يمكن تنفيذ ذلك في الخلفية، ما يؤدي إلى تبسيط عملية معالج الإعداد.