يتم اختيار تطبيق VIA النشط من خلال
ManageAssistActivity
في CarSettings. يتم تشغيل هذا المسار من خلال تطبيق PackageInstaller، كجزء من قسم "التطبيقات التلقائية" في شاشة "الإعدادات".

الشكل 1. التطبيقات التلقائية في شاشة "الإعدادات"
يتم عرض VIA المحدّد على النظام بطريقتَين:
- كجزء من
RolesManagerخدمة النظام - من خلال
VoiceInteractionManagerServiceعبرAssistUtilsواجهة برمجة التطبيقات الداخلية
يمكن الحصول على قائمة بأسماء VIAs المرشّحة باستخدام RolesManager
مع اسم الدور android.app.role.ASSISTANT.
تشغيل الكلمات المهمة
يوفر نظام التشغيل Android الفئة AlwaysOnHotwordDetector
كطبقة تجريدية فوق معالج الإشارات الرقمية (DSP) للأجهزة. ويوفّر ذلك طريقة ملائمة لربط VoiceInteractionService بنموذج صوتي من أجل التعرّف على الصوت بشكل دائم مع استهلاك منخفض للطاقة. هذا هو تدفق التفاعل الأكثر شيوعًا ومعرفةً، حيث يطلب المستخدم التفاعل مع تطبيق صوتي (VA) لبدء محادثة جديدة. يتم تحديد جلسات "المحادثة الصوتية" التي تبدأ بهذه الطريقة باستخدام SHOW_SOURCE_ASSIST_GESTURE flag.

الشكل 2. تشغيل الكلمات المهمة
التسمية التوضيحية تظهر خدمات النظام باللون الأزرق الفاتح، ومكوّنات VIA باللون الأخضر.
تشغيل PTT
ينطبق ذلك على الضغط على زر الجهاز لفترة طويلة أو قصيرة. في AAOS، يتم التعامل مع ميزة "اضغط لتتحدث" من خلال CarInputService. في عملية التنفيذ التلقائية، تعالج هذه الخدمة أحداث الإدخال التي يتم تلقّيها من خلال Vehicle HAL، وفي حالة التفاعل الصوتي تحديدًا، تطبّق المنطق التالي على الأحداث الرئيسية:
- يتم توجيه أحداث الضغط والتحدّث القصيرة (
KeyEvent.KEYCODE_VOICE_ASSIST) إلىVoiceInteractionManagerServiceلبدء جلسة صوتية جديدة. - يتم أولاً تسليم أحداث الضغط مع الاستمرار إلى أجهزة الاستقبال الخاصة بالعرض (مثل Android Auto أو CarPlay)، ثم إلى الأجهزة المتصلة عبر البلوتوث، وأخيرًا إلى تطبيق VIA المحلي.
يتم تحديد الجلسات التي تبدأ باستخدام هذا المسار بالرمز SHOW_SOURCE_PUSH_TO_TALK.

الشكل 3. تشغيل PTT
لدمج زرّ التحكّم الصوتي في الأجهزة مع نظام التشغيل Android Automotive، يُرجى الاطّلاع على عملية دمج إدخال مفتاح Automotive.
تفعيل ميزة "انقر للتحدّث" (أو زر البرنامج)
يتم بدء التفاعل الصوتي من واجهة مستخدم النظام باستخدام AssistUtil. هذه واجهة برمجة تطبيقات نظام مخفية لا يمكن استخدامها إلا من خلال تطبيقات النظام المجمّعة، مثل واجهة مستخدم النظام التي تتيح ما يلي:
- التفاعل مع
VoiceInteractionManagerServiceلبدء جلسات التحكّم الصوتي - تحديد VIA المحدَّد حاليًا
لعرض تطبيق VIA المحدّد بشكل ديناميكي، يمكن لواجهة مستخدم النظام استخدام
RoleManager
واتّباع التغييرات التي تطرأ على صاحب الدور ROLE_ASSISTANT.
يمكن العثور على مثال على كيفية تنفيذ عملية تفعيل TTT في CarSystemUI، AssistantButton.

الشكل 4. تفعيل ميزة "انقر للتحدّث"
ميزة "النقر للقراءة" في المساعد الصوتي
في Automotive، تتضمّن الإشعارات المنشورة في "مركز الإشعارات" والمحدّدة كإشعاراتINBOX أو INBOX_IN_GROUP (مثل رسائل SMS) زر إجراء "تشغيل"، ما يتيح للمستخدم أن تقرأ له VIA المحدّدة الإشعارات بصوت عالٍ، ويمكنه أيضًا الردّ صوتيًا.

الشكل 5. الإشعارات
لمزيد من المعلومات عن كيفية تنفيذ هذا المسار، راجِع مقالة التعامل مع أوامر المراسلة.
تشغيل VIA من مشغّل تطبيقات السيارة
وكما هو الحال مع أي تطبيق آخر، يمكن أن تتضمّن التطبيقات التي توفّر وظائف VIA نشاطًا واحدًا أو أكثر من أنشطة مشغّل التطبيقات في بيانها. ويعود للمطوّر ومصنّع المعدات الأصلية اللذين يوافقان على تثبيت هذا التطبيق مسبقًا تحديد طبيعة هذه الأنشطة.
ملاحظة مهمة: في السيارات، تخضع جميع الأنشطة، بما في ذلك أنشطة النظام، لقيود تجربة المستخدم أثناء القيادة. إذا كانت التجربة التي تريد تفعيلها من رمز مشغّل التطبيقات يجب أن تكون متاحة أثناء القيادة، عليك إضافتها إلى القائمة المسموح بها (إذا كنت من مصنّعي المعدات الأصلية) أو إضافة التعليقات التوضيحية إلى النشاط باستخدام البيانات الوصفية distractionOptimized. لمزيد من المعلومات، يُرجى الاطّلاع على إرشادات تشتيت انتباه السائق.
معالج الإشارات الرقمية (DSP) وطبقة تجريد الأجهزة (HAL) الخاصة بالصوت
احرص على مراجعة الإرشادات المعدَّلة بشأن التسجيل المتزامن للصوت بشكل دائم وطبقة تجريد الأجهزة الصوتية (HAL) في التسجيل المتزامن. قد يؤثر الوصول إلى واجهات برمجة التطبيقات هذه بشكل كبير في أداء ميزة "الاستجابة للكلمات المحفّزة"، كما هو موضّح في مقالة الاستجابة للكلمات المحفّزة.
الأذونات
منح أذونات ذات امتيازات على مستوى النظام
بما أنّ المستخدم لا يمكنه منح الإذن المميز، إذا كان المساعد الظاهري المستند إلى الذكاء الاصطناعي يحتاج إلى أي من هذه الأذونات، على مصنّعي المعدات الأصلية تحميل حزمة APK مسبقًا في صور النظام ومنح هذه الأذونات بشكل صريح في إصداراتهم. يُرجى الاطّلاع على طلب الأذونات.
لإجراء ذلك، أضِف تبعية قائمة امتيازات مسموح بها إلى مشروعك:
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}أضِف ملف أذونات القائمة المسموح بها الخاصة بامتيازات النظام إلى المجلد yourdata/etc/car:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
منح الأذونات الخطيرة مسبقًا
كما هو موضّح في
طلب
الأذونات، يتطلّب تطبيق VIA موافقة المستخدم للوصول إلى وظائف معيّنة. يتم منح بعض هذه الأذونات مسبقًا إلى المعالج التلقائي VoiceInteractionService (راجِع DefaultPermissionGrantPolicy.java). لمزيد من المعلومات حول أذونات المعالجات التلقائية، راجِع الأذونات المستخدمة فقط في المعالجات التلقائية. يمكن أيضًا منح الأذونات مسبقًا باستخدام ملف الإعداد default-permissions.xml. للحصول على تفاصيل حول القيود المتعلقة بمنح الأذونات مسبقًا، يُرجى الاطّلاع على القسم 9 في
مستند تعريف التوافق (CDD) لنظام التشغيل Android.
ملاحظة مهمة: في جميع الحالات، لن يحصل سوى تطبيق VIA التلقائي على هذه الأذونات مسبقًا. إذا كان النظام يتضمّن أكثر من تطبيق مساعد رقمي واحد مثبّت مسبقًا، يجب أن يطلب التطبيق المساعد الرقمي غير التلقائي الأذونات من المستخدم بشكل صريح كجزء من عملية الإعداد أو أثناء الاستخدام الأول.
التوزيع (التثبيت المُسبَق ونشر التحديثات)
يجب أن تكون التطبيقات الافتراضية المثبّتة مسبقًا ضمن الأقسام والمجلدات /product/priv-apps أو /vendor/priv-apps (يمكنك الاطّلاع على مزيد من المعلومات حول الأقسام في نظرة عامة على الأقسام وإنشاء أقسام للمنتجات).
في الحالة الثانية، بما أنّه يمكن تحديث قسم المورّد بشكل منفصل عن قسم النظام، لن تتمكّن التطبيقات المستضافة هنا من الوصول إلى واجهات برمجة التطبيقات @hide للنظام. واستنادًا إلى الموقع الجغرافي للتطبيقات المثبَّتة مسبقًا، يمكن إجراء التحديثات عبر التحديثات عبر الأثير (راجع التحديثات عبر الأثير) أو من خلال تحديثات التطبيقات من أحد متاجر التطبيقات.
التخصيص
كما ذكرنا في المفاهيم الخاصة بالسيارات، تُعدّ إمكانية تخصيص واجهة المستخدم وتجربة المستخدم واتساقها أكثر أهمية في السيارات مقارنةً بأي شكل جهاز آخر. لتحقيق أقصى قدر من إمكانية التشغيل التفاعلي، ننصح بشدة باستخدام مكتبة Car UI في AAOS. تتضمّن هذه المكتبة مكوّنات ومراجع يمكن دمجها في تطبيقات السيارات المصمَّمة ليتم تخصيصها من قِبل المصنّعين الأصليين للأجهزة. بهذه الطريقة، يمكن إنشاء حزمة APK واحدة بطريقة تتيح تخصيص واجهة المستخدم لتناسب تصميم كل طراز من طُرز السيارات.