عمليات الدمج

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

التطبيقات التلقائية في شاشة "الإعدادات"

الشكل 1: التطبيقات التلقائية في شاشة "الإعدادات"

يتم عرض المساعد الافتراضي الذي اخترته للنظام بطريقتَين:

  1. كجزء من RolesManagerخدمة تابعة لنظام التشغيل
  2. من خلال VoiceInteractionManagerService عبر AssistUtils واجهة برمجة التطبيقات الداخلية

يمكن الحصول على قائمة بأسماء VIA المحتملة باستخدام RolesManager مع اسم الدور android.app.role.ASSISTANT.

تشغيل الكلمات المهمة

يوفر نظام التشغيل Android الفئة AlwaysOnHotwordDetector كطبقة تجريد فوق معالج الإشارات الرقمية (DSP) للأجهزة. توفّر هذه الميزة طريقة سهلة لربط VoiceInteractionService بنموذج صوتي بهدف التعرّف على الصوت بشكل دائم مع استهلاك منخفض للطاقة. هذا هو تدفق التفاعل الأكثر شيوعًا ومعرفةً، حيث يطلب المستخدم التفاعل مع تطبيق صوتي (VA) لبدء محادثة جديدة. يتم تحديد جلسات "المحادثة الصوتية" التي تبدأ بهذه الطريقة باستخدام SHOW_SOURCE_ASSIST_GESTURE flag.

تشغيل الكلمات المهمة

الشكل 2: تشغيل الكلمات المهمة

أسطورة. تظهر خدمات النظام باللون الأزرق الفاتح، ومكوّنات VIA باللون الأخضر.

تشغيل PTT

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

  • يتم توجيه أحداث PTT القصيرة (KeyEvent.KEYCODE_VOICE_ASSIST) إلى VoiceInteractionManagerService لبدء جلسة صوتية جديدة.
  • يتم أولاً تسليم أحداث الضغط مع التحدّث الطويلة إلى أجهزة استقبال العرض (مثل Android Auto أو CarPlay)، ثم إلى الأجهزة المتصلة عبر البلوتوث، وأخيرًا إلى تطبيق VIA المحلي.

يتم تحديد الجلسات التي تبدأ باستخدام هذا المسار بالرمز SHOW_SOURCE_PUSH_TO_TALK.

تشغيل PTT

الشكل 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 من مشغّل تطبيقات السيارة

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

ملاحظة مهمة: في السيارات، تخضع جميع الأنشطة، بما في ذلك أنشطة النظام، لقيود تجربة المستخدم أثناء القيادة. إذا كان يجب أن تكون التجربة التي تريد تفعيلها من رمز مشغّل التطبيقات متاحة أثناء القيادة، عليك إضافتها إلى القائمة المسموح بها (إذا كنت من مصنّعي المعدات الأصلية) أو إضافة تعليق توضيحي إلى النشاط باستخدام البيانات الوصفية 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.

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

التوزيع (التثبيت المُسبَق ونشر التحديثات)

يجب أن تكون التطبيقات الافتراضية المثبّتة مسبقًا ضمن الأقسام والمجلدات /product/priv-apps أو /vendor/priv-apps (يمكنك الاطّلاع على مزيد من المعلومات حول الأقسام في نظرة عامة على الأقسام وإنشاء أقسام للمنتجات).

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

التخصيص

كما ذكرنا في مقالة مفاهيم خاصة بالسيارات، يُعدّ الاتساق والتخصيص في واجهة المستخدم وتجربة المستخدم أكثر أهمية في السيارات مقارنةً بأي شكل آخر من أشكال الأجهزة. لتحقيق الحد الأقصى من إمكانية التشغيل التفاعلي، ننصح بشدة باستخدام مكتبة Car UI في AAOS. تتضمّن هذه المكتبة مكوّنات ومراجع يمكن دمجها في تطبيقات السيارات المصمَّمة ليتم تخصيصها من قِبل المصنّعين الأصليين للأجهزة. بهذه الطريقة، يمكن إنشاء حزمة APK واحدة بطريقة تتيح تخصيص واجهة المستخدم لتناسب تصميم كل طراز من طرازات السيارات.