تدفقات التكامل

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

التطبيقات الافتراضية على شاشة الإعدادات

الشكل 1. التطبيقات الافتراضية على شاشة الإعدادات

يتم عرض VIA المحدد للنظام بطريقتين:

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

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

إثارة الكلمة المهمة

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

إثارة الكلمة المهمة

الشكل 2. تفعيل الكلمة المهمة

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

تفعيل الضغط والتحدث

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

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

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

تفعيل الضغط والتحدث

الشكل 3. تفعيل الضغط والتحدث

لدمج زر التحكم الصوتي بالجهاز في AAOS، راجع تكامل إدخال مفتاح السيارة .

تشغيل ميزة النقر للتحدث (أو زر البرنامج)

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

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

لتقديم تطبيق VIA المحدد ديناميكيًا، يمكن لواجهة مستخدم النظام استخدام RoleManager ومتابعة التغييرات على صاحب الدور لـ ROLE_ASSISTANT . يمكن العثور على مثال لكيفية تنفيذ تشغيل TTT في CarSystemUI، AssistantButton .

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

الشكل 4. تشغيل ميزة النقر للتحدث

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

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

إشعارات

الشكل 5. الإخطارات

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

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

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

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

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

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

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

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

التخصيص

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