توفّر Android Automotive واجهة مستخدم جديدة للنظام تم تطويرها خصيصًا للمركبات. معظم المكوّنات من واجهة مستخدم النظام ترتبط ارتباطًا وثيقًا بخدمات إطار العمل. تشير واجهة مستخدم النظام إلى أي معروض على الشاشة وليس جزءًا من التطبيق. واجهة مستخدم نظام السيارات (في قسم حزمة عنصر CarSystemUI) هي امتداد لواجهة مستخدم نظام Android (في حزمة واجهة مستخدم النظام)، التي تم تخصيصها خصيصًا للمركبات.
ما هي واجهة مستخدم النظام؟
تشمل المكونات الخاصة بواجهة مستخدم نظام Automotive ما يلي:
المكوّن | الوصف |
---|---|
واجهة مستخدم شاشة القفل | الشاشة التي تتم من خلالها مصادقة المستخدمين لحساب مستخدم محدّد. |
شريط التنقّل | شريط النظام الذي يمكن وضعه على يسار أو أسفل أو يمين الشاشة ويمكن أن تتضمن أزرار واجهة التنقل إلى تطبيقات مختلفة، وتبديل لوحة الإشعارات، توفير أدوات تحكّم في المركبة (مثل نظام التدفئة والتهوية وتكييف الهواء). تختلف هذه القائمة عن واجهة مستخدم نظام Android. والذي يوفر أزرار الرجوع والصفحة الرئيسية وحزمة التطبيقات. |
شريط الحالة | شريط النظام موضوع على الشاشة ويعمل كشريط تنقل تشير رسالة الأشكال البيانية
ويوفر شريط الحالة أيضًا وظائف لدعم:
|
واجهة مستخدم النظام | يشير إلى أي عنصر معروض على الشاشة وليس جزءًا من تطبيق. |
واجهة مستخدم "أداة تبديل المستخدمين" | الشاشة التي يمكن للمستخدم من خلالها اختيار مستخدم مختلف. |
واجهة المستخدم لمستوى الصوت | مربّع حوار يظهر عندما يستخدم السائق أزرار التحكّم بمستوى الصوت المادية لتغيير مستوى الصوت في الخاص بك. |
كيف تعمل واجهة مستخدم النظام؟
"واجهة مستخدم النظام" هي تطبيق Android يتم تشغيله عند تشغيل الجهاز. تشير رسالة الأشكال البيانية من خلال الانعكاس من خلال SystemServer: في ما يلي نقاط الدخول الأكثر صلة بالجوانب المرئية للمستخدم المتعلقة بواجهة مستخدم النظام. يمكنك استخدام هذه المكوّنات لتخصيص واجهة مستخدم نظام Android للإمكانيات الخاصة بنظام التشغيل Automotive.
config_statusBarComponent
config_systemUIFactoryComponent
يُعد CarSystemUI امتدادًا لحزمة واجهة مستخدم النظام، مما يعني أن الفئات يمكن استخدام الموارد في حزمة واجهة مستخدم النظام وتجاوزها بواسطة حزمة CarSystemUI.
تخصيص واجهة مستخدم النظام
النوافذ المتراكبة
على الرغم من أنّه يمكنك تعديل رمز المصدر Android لتخصيص واجهة مستخدِم النظام، فقد يؤدي ذلك إلى صعوبة تطبيق تحديثات Android المستقبلية وتعقيده. بدلاً من ذلك، يستخدم Android مع استخدام دليل تراكب، والذي يمكّنك من استبدال ملفات الموارد بدون تعديل رمز المصدر في نظام إصدار Android، يلغي نظام التراكب الملفات في التحكم فيها. يتم تحديد جميع الملفات المعدلة بوضوح دون اجتياز عملية شجرة رمز مصدر AOSP
يجب وضع الملفات التي تظهر على سطح الفيديو في دليل PRODUCT_PACKAGE_OVERLAYS
ويجب أن يكون لها
المجلدات الفرعية نفسها تمامًا مثل هيكل جذر AOSP الأصلي. بالنسبة إلى نظام التشغيل Android:
10 أو أعلى، تم ضبط PRODUCT_PACKAGE_OVERLAYS
على:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
تستخدم واجهة مستخدم نظام Automotive موارد من واجهة مستخدم النظام وحزم CarSystemUI. مما يعني أنه يمكن إلغاء الموارد من كل موقع بتراكبات للتأثير على الشكل والأسلوب لواجهة مستخدم نظام Automotive.
لاستبدال ملف، انسخ بنية الدليل للملف الذي يتم استبداله في
الدليل الذي حدّدته ثم ضمِّن البديل في ذلك الدليل /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
،
(في System UI، وليس 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/
في ما يلي وصفان لنقطة دخول التخصيص الأساسية.
شريط التنقل
يمكن أن تحتوي واجهة مستخدم نظام Automotive على ثلاثة أشرطة تنقل في الجانب الأيسر والأسفل ويمين من الشاشة. يتم تبديل إمكانية رؤية كل شريط من أشرطة النظام من خلال عمليات الضبط التالية:
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>
يوجد شريط الحالة في طبقة نافذة خاصة تتضمن أيضًا
لوحة الإشعارات وأداة تبديل المستخدمين وإشعارات التنبيهات (HUNs)
حارس المفاتيح. يتم تضمين التخطيطات المختلفة لها في
super_status_bar.xml
تغييرات رمز المصدر لواجهة مستخدم النظام
قد لا توفّر التراكبات المرونة اللازمة لتخصيص سلوك واجهة مستخدم النظام بشكلٍ كافٍ.
تنبيه: يصعب تعديل التغييرات التي يتم إجراؤها على رمز المصدر في Android في الإصدارات الأحدث من Android. ننصحك بشدة بتوسيع رمز واجهة مستخدِم نظام Automotive. بدلاً من تعديل التعليمة البرمجية بشكل مباشر. بهذه الطريقة، يتم إدخال رمز المصدر الأساسي لواجهة مستخدم نظام Automotive. بالحد الأدنى من التعارضات بسبب الدمج، حيث يتم تنفيذ جميع التخصيصات من خلال مساحات عرض واجهة برمجة التطبيقات المعروفة.
يمكن تخصيص معظم جوانب واجهة مستخدم النظام من خلال نقطتي الدخول هاتين:
config_statusBarComponent
config_systemUIFactoryComponent
على سبيل المثال، إذا أنشأت فئة باسم
com.android.systemui.statusbar.car.custom.CustomCarStatusBar
، الذي
يمتد إلى CarStatusBar
، تعديل config_statusBarComponent
إلى نقطة
لهذا المكون الجديد. يتيح تمديد هذه الفئة إمكانية تخصيص معظم العناصر ذات الصلة
إلى شريط النظام ومنطق الإشعارات.
وبالمثل، يمكنك إنشاء CustomCarSystemUIFactory
ووضعها في
config_systemUIFactoryComponent
استخدِم هذه الفئة لتعديل وظائف
واجهة مستخدم مستوى الصوت وشاشة القفل
تخصيص التبديل بين المستخدمين وفتح قفله
توضّح المادة التالية كيفية تخصيص تجربة التبديل بين المستخدمين.
المصطلح | الوصف |
---|---|
تأمين المفاتيح | مربّع حوار بملء الشاشة لمنع التفاعل غير المقصود مع التطبيق الذي يعمل في المقدّمة. تحمي خصوصية كل مستخدم عند إعداد عدة مستخدمين. |
جارٍ تحميل مربّع الحوار | يتم عرض شاشة التحميل عند التبديل بين "المستخدمين". |
شاشة القفل، ارتداد | شاشة تطلب من أحد الأشخاص إدخال رقم تعريف شخصي أو نقش أو كلمة مرور. |
المستخدم | مستخدم Android |
أداة اختيار المستخدمين | شاشة منتقي المستخدم تظهر عند تشغيل الجهاز |
مبدِّل المستخدمين | مبدِّل المستخدمين المعروض عند تبديل الشاشات من "الإعدادات السريعة" |
تخصيص التبديل بين المستخدمين
حارس مفاتيح وارتداد
في نظام التشغيل Android Automotive، يتم عرض شاشة لوحة المفاتيح مع أداة اختيار المستخدمين فقط. عندما ينقر المستخدم على الزر "إلغاء" في شاشة القفل يتم عرض شاشة قفل المفاتيح أدناه.
الشكل 1. شاشة قفل المفاتيح
تظهر شاشة قفل تعرض ارتدادًا عندما يختار المستخدم نوع خصوصية فتح قفل الجهاز، كما هو موضح أدناه.
الشكل 2. شاشة القفل.
عند ضبط القفل على تشغيل الكهرباء أو إيقافها يدويًا، اتّبِع التعليمات التالية:
adb shell input keyevent 26
أداة اختيار المستخدمين
تظهر شاشة "أداة اختيار المستخدم" عندما يكون الجهاز جزءًا لا يتجزأ من شريط حالة واجهة مستخدم النظام في السيارة.
وستتم إعادة تشغيل الخرائط. لمزيد من المعلومات، يُرجى مراجعة
FullscreenUserSwitcher
الشكل 3. شاشة منتقي المستخدم
يمكن تخصيص تخطيط هذه الشاشة في
car_fullscreen_user_switcher.xml
شاشة التحميل
تظهر شاشة التحميل عند تبديل المستخدم، بغض النظر عن نقطة الدخول. بالنسبة
على سبيل المثال، من خلال أداة اختيار المستخدم أو شاشة "الإعدادات". تُعد شاشة التحميل جزءًا لا يتجزأ من
إطار عمل واجهة مستخدم النظام وربطها بالفئة العامة بعنوان
CarUserSwitchingDialog
راجع الشكل 3 أعلاه للحصول على مثال.
يمكن تخصيص المظهر باستخدام
Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
لإعداد مستخدم Android، يسمح مسار "معالج الإعداد" الأولي للسائق بإعداد مستخدم لأنفسهم. وإذا ربط برنامج التشغيل بعد ذلك مستخدم Android بحساب Google، يمكن للمستخدم تحديد اسمها من هذا الحساب. ومع ذلك، إذا حدد برنامج التشغيل اسمًا، على سبيل المثال DriverB، ثم ربط اسم المستخدم هذا بحسابه على Google باسم هدى، الاسم الذي تم تعيينه في الأصل (DriverB) بسبب تعيين هذا الاسم بشكل صريح. السائق يمكنك تغيير الاسم من قائمة "الإعدادات" فقط.
يمكن تخصيص التنسيق في car_user_switching_dialog.xml.
.
يمكن للمصنّعين الأصليين للأجهزة إخفاء شريط الحالة والتنقل باستخدام المظهر المسمى
NoActionBar.Fullscreen
(هذه هي واجهة مستخدم النظام الأصلية، والتي تم تحديثها لواجهة المستخدم المرجعية للسيارة). لمزيد من المعلومات، يُرجى مراجعة
التخصيص:
بينما يمكن للمصنّعين الأصليين للأجهزة توفير نقاط دخول واجهة المستخدم للمبدلين، يمكن أن تكون النتائج في بعض الأحيان غير مرغوب فيه. في حال حدوث ذلك:
- ينشئ المصنّع الأصلي للجهاز شاشة التحميل المخصّصة (أو مربّع الحوار) ويعرضها.
- بالنظر إلى تجربة المستخدم، يطلق المصنّع الأصلي للجهاز شاشة التحميل المخصصة عندما يختار المستخدم الوسائل والذي يمكن إخفاؤه عند اكتمال عملية تبديل المستخدم.
- يجب أن يحدّد المصنّع الأصلي للجهاز الأولوية نافذة وفقًا لتفضيلاته. على سبيل المثال، نوع نافذة ذي أولوية أعلى. اولوية لا يمكن أن تتجاوز الأولوية القصوى لقفل المفاتيح.
- يضع المصنّع الأصلي للجهاز
config_customUserSwitchUi=true
في إطار العمل الأساسي.config.xml
كما هو موضّح فيconfig_customuserswitchui
. نتيجة لذلك، أُنشئت مكتبة مات بلوت ليب في لا يعرض إطار العملCarUserSwitchingDialog
.
تخصيص شاشة القفل
شاشة القفل هي جزء لا يتجزأ من واجهة مستخدم النظام التي يمكن تخصيصها من قِبل المصنّع الأصلي للجهاز.
لتخصيص المسار، ابدأ بالسمة frameworks/base/packages/CarSystemUI/
.
تخصيص إعداد المستخدم لأول مرة
يُجري معالج الإعداد إعداد المستخدم لأول مرة. ويمكن تخصيص هذا أيضًا. يمكنك استخدام واجهات برمجة تطبيقات UserManager لإنشاء مستخدم. وفي بعض الحالات، يمكن تنفيذ ذلك في الخلفية، وبالتالي تسهيل عملية معالج الإعداد.