عمليات الدمج

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

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

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

يتم عرض المساعد الافتراضي المحدّد على النظام بطريقتَين:

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

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

تشغيل المساعد الافتراضي باستخدام الكلمة المهمة

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

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

الشكل 2: تشغيل المساعد الافتراضي باستخدام الكلمة المهمة

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

تشغيل المساعد الافتراضي باستخدام ميزة "اضغط للتحدّث"

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

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

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

تشغيل PTT

الشكل 3: تشغيل المساعد الافتراضي باستخدام ميزة "اضغط للتحدّث"

لدمج زر التحكّم الصوتي في الأجهزة مع AAOS، يُرجى الاطّلاع على مقالة دمج إدخال المفاتيح في السيارات.

تشغيل المساعد الافتراضي باستخدام ميزة "انقر للتحدّث" (أو زر البرنامج)

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

  • التفاعل مع VoiceInteractionManagerService لبدء جلسات التحكّم الصوتي
  • تحديد المساعد الافتراضي المحدّد حاليًا

لعرض تطبيق المساعد الافتراضي المحدّد ديناميكيًا، يمكن لواجهة مستخدم النظام استخدام RoleManager وتتبُّع التغييرات التي تطرأ على حامل الدور في ROLE_ASSISTANT. يمكنك الاطّلاع على مثال عن كيفية تنفيذ تشغيل ميزة "انقر للتحدّث" في CarSystemUI، AssistantButton.

تفعيل ميزة "انقر للتحدّث"

الشكل 4: تشغيل المساعد الافتراضي باستخدام ميزة "انقر للتحدّث"

ميزة "انقر للقراءة" في المساعد الصوتي

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

الإشعارات

الشكل 5: الإشعارات

لمزيد من المعلومات عن كيفية تنفيذ هذا المسار، يُرجى الاطّلاع على مقالة معالجة أوامر المراسلة.

تشغيل المساعد الافتراضي من مشغّل السيارة

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

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

معالِج الإشارات الرقمية (DSP) وAudio HAL

يُرجى مراجعة الإرشادات المعدَّلة بشأن التسجيل الصوتي المتزامن الذي يكون مفعّلاً دائمًا وAudio 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>

المنح المسبق للأذونات الخطيرة

كما هو موضّح في مقالة طلب الأذونات، يتطلّب المساعد الافتراضي موافقة المستخدم للوصول إلى وظائف معيّنة. يتم منح بعض هذه الأذونات مسبقًا إلى VoiceInteractionService التلقائي (يُرجى الاطّلاع على DefaultPermissionGrantPolicy.java). لمزيد من المعلومات عن أذونات معالِجات الأحداث التلقائية، يُرجى الاطّلاع على مقالة الأذونات المستخدَمة في معالِجات الأحداث التلقائية فقط. من الممكن أيضًا منح الأذونات مسبقًا باستخدام ملف الإعداد default-permissions.xml. للاطّلاع على تفاصيل القيود المتعلقة بالمنح المسبق للأذونات، يُرجى الاطّلاع على القسم 9 في مستند تعريف التوافق مع Android (CDD).

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

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

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

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

التخصيص

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