عمليات الدمج

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

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

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

يتم عرض واجهة برمجة التطبيقات المحدّدة للنظام بطريقتَين:

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

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

تنشيط الكلمات المهمة

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

تنشيط الكلمات المهمة

الشكل 2: تنشيط الكلمات المهمة

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

بدء الاتصال عبر الضغط على زر التحدث

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

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

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

بدء الاتصال عبر الضغط على زر التحدث

الشكل 3: بدء الاتصال عبر الضغط على زر التحدث

لدمج زر التحكّم الصوتي بالأجهزة في نظام التشغيل AAOS، يُرجى الاطّلاع على عملية دمج Automotive Key Input.

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

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

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

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

بدء ميزة "النقر للتحدّث"

الشكل 4: بدء ميزة "النقر للتحدّث"

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

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

الإشعارات

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

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

تشغيل VIA من مشغّل تطبيقات السيارة

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

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

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

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

الأذونات

منح أذونات امتيازات النظام

بما أنّ المستخدم لا يمكنه منح الإذن المميّز، إذا كان تطبيق VIA يحتاج إلى أيٍّ من هذه الأذونات، على المصنّعين الأصليّين للأجهزة تحميل حِزم 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 التلقائية على هذه الأذونات الممنوحة مسبقًا. إذا كان النظام يحتوي على أكثر من واجهة برمجة تطبيقات واحدة مُحمَّلة مسبقًا، يجب أن تطلب واجهة برمجة التطبيقات غير التلقائية صراحةً الأذونات من المستخدم كجزء من عملية الإعداد أو أثناء الاستخدام الأول.

التوزيع (التثبيت المُسبَق للتطبيقات وتحديثها)

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

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

التخصيص

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