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

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

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

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

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

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

System UI هو تطبيق 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

تستخدم واجهة مستخدم نظام السيارات الموارد من System UI وحزم 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 ، (في 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/

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

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

  • 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. نوصي بشدة بتوسيع كود واجهة المستخدم لنظام السيارات بدلاً من تعديل الكود مباشرة. بهذه الطريقة، يمكن ترقية التعليمات البرمجية المصدر لواجهة مستخدم نظام السيارات الأساسية مع الحد الأدنى من تعارضات الدمج لأنه يتم تنفيذ جميع التخصيصات من خلال أسطح واجهة برمجة التطبيقات المعروفة.

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

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

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

تخصيص تبديل المستخدم وفتحه

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

شرط وصف
حارس المفاتيح مربع حوار ملء الشاشة لمنع التفاعل غير المقصود مع التطبيق الأمامي. يحمي خصوصية كل مستخدم عند إعداد عدة مستخدمين.
جارٍ تحميل مربع الحوار يتم عرض شاشة التحميل عند التبديل بين المستخدمين.
قفل الشاشة، الحارس شاشة تتطلب من الشخص إدخال رقم التعريف الشخصي أو النمط أو كلمة المرور.
مستخدم مستخدم أندرويد.
منتقي المستخدم يتم عرض شاشة منتقي المستخدم عند تشغيل الجهاز.
تبديل المستخدم يتم عرض أداة تبديل المستخدم عند تبديل الشاشات من QuickSettings.

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

حارس المفاتيح والحارس

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

شاشة حارس المفاتيح

الشكل 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 الخاص به باسم Maddy، فلن يتغير الاسم المعين في الأصل (DriverB) لأنه تم تعيين هذا الاسم بشكل صريح. يمكن للسائق تغيير الاسم من قائمة الإعدادات فقط.

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

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

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

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

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

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

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

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