DriverUI

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

DriverUI

الشكل 1: DriverUI.

‫DriverUI هو تطبيق نظام Android يعرض شاشة مجموعة أدوات القياس بأكملها، باستثناء العناصر ذات الصلة بالسلامة أو العناصر التنظيمية التي يعرضها برنامج العرض عالي التوفّر (HAR). تعرض واجهة DriverUI معلومات ذات صلة بتشغيل الوسائط والمكالمات الهاتفية والخرائط والتنقّل وغير ذلك، وتستخدم تصميم Automotive المتوافق مع Compose.

‫DriverUI كنشاط تلقائي للمجموعة

يعمل DriverUI كتطبيق مجمّع ذي امتيازات في نظام التشغيل Android، ويبدأ نظام التشغيل Android Automotive تشغيله تلقائيًا.

يستخدم نظام التشغيل AAOS الفئة ClusterHomeManager، المعروفة أيضًا باسم Cluster2، لإنشاء لوحات عدادات. تحدّد هذه الفئة الإعدادات اللازمة لتحديد تنفيذ مجموعة أدوات القياس وكيفية تفاعل AAOS معها. توفّر Google عمليات تنفيذ مرجعية لواجهات برمجة تطبيقات Cluster2.

المنصات

يمكنك إنشاء "أمان العرض" وتشغيله على "مساحة العرض الآمنة". منصة المركبات المحدّدة بالبرامج (SDV):

  • يتطلّب ذلك جهازَين افتراضيَّين للضيوف.
  • يتم تشغيل HAR في SDV Media (المعروف أيضًا باسم الجهاز الافتراضي الذي يتم تشغيله بسرعة) في جهاز افتراضي للضيف.
  • تشغيل DriverUI في جهاز افتراضي آخر لنظام المعلومات والترفيه (IVI) في "بيئة تطوير البرامج الآمنة" (SDV)
  • تشغيل "مراقبة السلامة" على الجهاز الافتراضي لوسائط SDV

بنية منصة SDV

الشكل 2: بنية منصة المركبات المزوّدة ببرامج

دمج مخرجات HAR وDriverUI

يستخدم كلّ من HAR وDriverUI شاشات عرض منفصلة لعرض واجهة المستخدم. يكون الناتجان مدمجَين ويظهران كصورة واحدة في DriverUI.

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

تركيب HAR وDriverUI

الشكل 3: تركيب HAR وDriverUI

التواصل بين DriverUI وHAR

تتواصل واجهة DriverUI مع HAR باستخدام استدعاءات الإجراء عن بُعد (RPC). رسالة إشارة نبض القلب هي مثال على البيانات التي يتم إرسالها عبر قناة RPC وتتألف من طابع زمني كأحد حقولها.

يتم استخدام gRPC لطلبات الإجراءات عن بُعد. في SDV، توفّر اتصالات SDV برنامج SDV Gateway Client لاكتشاف قناة وإنشائها من DriverUI إلى HAR. تحدّد خدمة gRPC ملف Protocol Buffers:


// Heartbeat.
rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse) {}

// Document switched in the DriverUI.
rpc DocumentSwitched(DocumentSwitchedRequest) returns (DocumentSwitchedResponse) {}

// Document updated in the DriverUI. Unary RPC.
rpc DocumentUpdated(DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

// Document updated in the DriverUI. Requests are streamed with each request
// containing a part of the document and the entire document is assembled from these
// chunks by the server.
rpc DocumentUpdatedStreaming(stream DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

/// Request for HAR to change design tokens.
rpc DesignTokenUpdate(DesignTokenUpdateRequest) returns (DesignTokenUpdateResponse) {}

// Request to change the current locale used in HAR.
rpc LocaleUpdate(LocaleUpdateRequest) returns (LocaleUpdateResponse) {}

// Requests to swap a certain variant at a Figma node.
rpc ChangeVariant(ChangeVariantRequest) returns (ChangeVariantResponse) {}

// Requests to change the container (display/root node) configuration (dpi, size) in HAR.
rpc ChangeContainerConfiguration(ChangeContainerConfigurationRequest) returns (ChangeContainerConfigurationResponse) {}

تتوفّر تفاصيل الطلب والاستجابة في مصدر Display Safety على packages/apps/Car/DriverUI/proto/driverui.proto في مستودع الرموز البرمجية رمز مصدر ub-automotive.

على منصة SDV، توفّر اتصالات SDV برنامج SDV Gateway Client لاكتشاف قناة gRPC وإنشائها من DriverUI إلى HAR.

يؤدي تنفيذ هذه الأوامر باستخدام جهاز IVI إلى إرسال رسالة إلى SDV Media، ما يؤدي إلى بدء تحديثات المظاهر على مستوى المجموعة بأكملها.

adb shell cmd car_service inject-key -d 1 9 # Purple Theme
adb shell cmd car_service inject-key -d 1 8 # Blue Theme

تواصل RPC لتغيير كل من واجهة مستخدم السائق ومظهر HAR

الشكل 4. تواصل RPC لتغيير كلّ من مظهر DriverUI وHAR

عرض معلومات الوسائط والخرائط والهاتف على مجموعة الأجهزة

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

  1. خرائط
  2. الاتصالات الهاتفية
  3. الوسائط

يمنح النظام تلقائيًا الأولوية لعرض التنقّل في "خرائط Google" أو خدمات "الهاتف" النشطة على حالة "الوسائط" التلقائية.

يوضّح الشكل التالي حالات العرض المختلفة لواجهة مستخدم DriverUI:

واجهة مستخدم DriverUI تعرض قسم "الوسائط والاتصال الهاتفي" في مجموعة كاملة.

الشكل 5. واجهة مستخدم السائق تعرض قسم "الوسائط والاتصال الهاتفي" في مجموعة كاملة.

تصميم السيارات لعملية الدمج مع Compose

تستخدم DriverUI تصميم Automotive في Compose للسماح بعرض التصاميم (Figma) وتكرارها مباشرةً داخل تطبيق Android. ويساعد هذا التكامل في سد الفجوة بين التصميم والتطوير من خلال إتاحة عرض مستندات التصميم في بيئة وقت التشغيل.

الوصول إلى مواد عرض التصميم

تتضمّن قاعدة الرموز نماذج لمستندات Figma الخاصة بواجهة DriverUI. للوصول إلى هذه التصاميم وتعديلها، اتّبِع الخطوات التالية:

  1. ابدأ DriverUI باستخدام ملف تصميم Automotive Design for Compose DCF المحلي من packages/apps/Car/DriverUI/src/main/assets/figma/*.dcf.
  2. حدِّد موقع ملف مادة العرض packages/apps/Car/DriverUI/src/main/assets/DriverUI.fig.
  3. استورِد هذا الملف إلى Figma للاطّلاع على التصاميم المصدر أو إجراء تغييرات.

إصدار Automotive Design for Compose

  • يستخدم Gradle إصدار Automotive Design for Compose المحدّد لـ designcompose في packages/apps/Car/libs/aaos-apps-gradle-project/gradle/libs.versions.toml.
  • تتوفّر إصدارات Automotive Design for Compose في صفحة الإصدارات.

إعدادات التحديثات الفورية

يتيح Automotive Design for Compose التعديلات المباشرة في وضع التطوير، ما يسمح بعرض التغييرات التي يتم إجراؤها في Figma على الفور في DriverUI. ويسهّل ذلك دورات الاختبار السريع والتكرار الأسرع للتصميم.

نفِّذ الأمر التالي لضبط رمز Figma المميز في DriverUI:

adb shell am startservice \
  -n "com.android.car.driverui/com.android.designcompose.ApiKeyService" \
  -a setApiKey \
  -e ApiKey $FIGMA_ACCESS_TOKEN \
  --user 0

مزامنة مستند تصميم الجهازَين الافتراضيين

في عملية إعداد جهازَين افتراضيَين، يجب أن تنتقل تعديلات التصميم عبر الحدود للحفاظ على الاتساق.

  • يستردّ DriverUI أحدث مستند تصميم Figma وينقله إلى HAR باستخدام قنوات الاتصال gRPC الموضّحة بالتفصيل في هذه الصفحة.
  • نتيجةً لذلك، يتم تعديل المجموعة بالكامل باستخدام أحدث تكرارات تصميم Figma، ما يحافظ على مزامنة كل من الأجهزة الافتراضية مع مصدر التصميم.

تعديل مستند التصميم مباشرةً من Figma إلى DriverUI وHAR

الشكل 6. تعديل مستند التصميم مباشرةً من Figma إلى DriverUI وHAR

تأمين قناة gRPC

يتضمّن gRPC إمكانية دمج SSL وTLS، ويشجّع على استخدام SSL وTLS للمصادقة على الخادم وتشفير جميع البيانات المتبادلة بين العميل والخادم. تتوفّر آليات اختيارية للعملاء لتقديم شهادات للمصادقة المتبادلة. لمزيد من المعلومات حول مصادقة gRPC، يُرجى الاطّلاع على المصادقة.