یکپارچه سازی جریان دارد

انتخاب VIA فعال توسط ManageAssistActivity در CarSettings انجام می شود. این جریان توسط برنامه PackageInstaller به عنوان بخشی از بخش برنامه‌های پیش‌فرض در صفحه تنظیمات فعال می‌شود.

برنامه های پیش فرض در صفحه تنظیمات

شکل 1. برنامه های پیش فرض در صفحه تنظیمات

VIA انتخاب شده به دو صورت در معرض سیستم قرار می گیرد:

  1. به عنوان بخشی از سرویس سیستم RolesManager
  2. توسط VoiceInteractionManagerService از طریق API داخلی AssistUtils .

با استفاده از RolesManager با نام نقش android.app.role.ASSISTANT می‌توانید فهرستی از VIAهای نامزد دریافت کنید.

راه اندازی کلمه کلیدی

اندروید AlwaysOnHotwordDetector را به عنوان یک انتزاع در بالای DSP سخت افزاری ارائه می دهد. این یک راه راحت برای مرتبط کردن VoiceInteractionService به یک مدل صوتی برای تشخیص صدای همیشه روشن با انرژی کم ارائه می دهد. این رایج ترین و شناخته شده ترین جریان تعامل است که در آن کاربر درخواست می کند تا با یک برنامه صوتی (VA) تعامل داشته باشد تا مکالمه جدیدی را آغاز کند. جلسات صوتی که از این طریق شروع شده اند با SHOW_SOURCE_ASSIST_GESTURE flag شناسایی می شوند.

راه اندازی کلمه کلیدی

شکل 2. راه اندازی کلید واژه

افسانه. خدمات سیستم به رنگ آبی روشن و اجزای VIA به رنگ سبز ظاهر می شوند.

تحریک PTT

این برای فشار طولانی یا کوتاه دکمه سخت افزاری صدق می کند. در AAOS، PTT توسط CarInputService اداره می شود. در یک پیاده‌سازی پیش‌فرض، این سرویس رویدادهای ورودی دریافت‌شده از طریق Vehicle HAL را مدیریت می‌کند و در مورد خاص تعامل صوتی، منطق زیر را برای رویدادهای کلیدی اعمال می‌کند:

  • رویدادهای کوتاه PTT ( KeyEvent.KEYCODE_VOICE_ASSIST ) به VoiceInteractionManagerService هدایت می شوند تا یک جلسه صوتی جدید شروع شود.
  • رویدادهای طولانی PTT ابتدا به گیرنده های پروجکشن (به عنوان مثال، Android Auto یا CarPlay)، سپس به دستگاه های متصل به بلوتوث و در نهایت به برنامه محلی VIA داده می شود.

جلساتی که با استفاده از این جریان شروع شده اند با SHOW_SOURCE_PUSH_TO_TALK شناسایی می شوند.

تحریک PTT

شکل 3. تحریک PTT

برای ادغام یک دکمه کنترل صوتی سخت افزاری با AAOS، به یکپارچه سازی ورودی کلید خودرو مراجعه کنید.

راه اندازی Tap-to-Talk (یا دکمه نرم افزار)

فعال کردن تعامل صوتی از رابط کاربری سیستم با استفاده از AssistUtil انجام می شود. این یک API سیستم مخفی است که فقط می تواند توسط برنامه های سیستمی همراه مانند رابط کاربری سیستم که فعال می کند استفاده شود:

  • تعامل با VoiceInteractionManagerService برای شروع جلسات کنترل صدا.
  • تعیین کنید که VIA در حال حاضر انتخاب شده است.

برای ارائه پویا برنامه VIA انتخاب شده، رابط کاربری سیستم می‌تواند از RoleManager استفاده کند و تغییرات روی دارنده نقش را برای ROLE_ASSISTANT دنبال کند. نمونه ای از نحوه پیاده سازی راه اندازی TTT را می توان در CarSystemUI، AssistantButton یافت.

راه‌اندازی Tap-to-Talk

شکل 4. راه اندازی Tap-to-Talk

دستیار صوتی ضربه زدن برای خواندن (TTR)

در Automotive، اعلان‌های ارسال‌شده به مرکز اعلان‌هایی که به‌عنوان اعلان‌های INBOX یا INBOX_IN_GROUP شناسایی می‌شوند (مثلاً پیام‌های SMS) شامل یک دکمه عملکرد Play هستند که به کاربر اجازه می‌دهد اعلان‌ها را با صدای بلند توسط VIA انتخاب‌شده بخواند و به صورت اختیاری، به صورت صوتی پاسخ دهد.

اطلاعیه

شکل 5. اطلاعیه ها

برای کسب اطلاعات بیشتر در مورد نحوه اجرای این جریان، به Handle messaging commands مراجعه کنید.

راه اندازی VIA از لانچر ماشین

مانند هر برنامه دیگری، VIA می‌تواند یک یا چند فعالیت راه‌انداز را در مانیفست خود شامل شود. این بستگی به توسعه‌دهنده برنامه و OEM دارد که از قبل نصب این برنامه را بپذیرند تا تصمیم بگیرند که این فعالیت‌ها چه کاری انجام دهند.

مهم. در Automotive، تمام فعالیت‌ها، از جمله فعالیت‌های سیستمی، در حین رانندگی مشمول محدودیت‌های UX هستند. اگر تجربه‌ای که می‌خواهید از نماد راه‌انداز فعال کنید باید در حین رانندگی در دسترس باشد، آن را به لیست مجاز اضافه کنید (اگر OEM هستید) یا فعالیت را با فراداده‌های distractionOptimized حاشیه‌نویسی کنید. برای اطلاعات بیشتر، دستورالعمل‌های حواس‌پرتی راننده را ببینید.

DSP و HAL صوتی

حتماً دستورالعمل‌های به‌روزرسانی شده را در مورد ضبط صدای همیشه روشن همزمان و HAL صوتی در ضبط همزمان مرور کنید. دسترسی به این APIها ممکن است تأثیر قابل توجهی بر عملکرد تشخیص کلمه کلیدی داشته باشد همانطور که در پاسخ به کلمات کلیدی توضیح داده شد.

مجوزها

مجوزهای دارای امتیاز سیستم را اعطا کنید

با توجه به اینکه کاربر نمی تواند مجوز ممتاز را اعطا کند، اگر یک VIA به هر یک از آنها نیاز داشته باشد، OEM ها باید 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 غیر پیش‌فرض باید به‌عنوان بخشی از راه‌اندازی یا در طول اولین استفاده، صراحتاً از کاربر مجوز درخواست کند.

توزیع (پیش نصب و استقرار به روز رسانی ها)

VIAهای از پیش نصب شده باید در پارتیشن‌ها و پوشه‌های /product/priv-apps یا /vendor/priv-apps زندگی کنند (اطلاعات بیشتر درباره پارتیشن‌ها را در قسمت پارتیشن‌ها و ساخت پارتیشن‌های محصول ببینید).

در حالت دوم، با توجه به اینکه پارتیشن فروشنده می‌تواند جدا از سیستم به‌روزرسانی شود، برنامه‌های میزبانی شده در اینجا نمی‌توانند به APIهای سیستم @hide دسترسی پیدا کنند. بسته به مکان برنامه‌های از پیش نصب‌شده، به‌روزرسانی‌ها می‌توانند به‌صورت OTA ( به‌روزرسانی‌های OTA را ببینید) یا از طریق به‌روزرسانی‌های برنامه از فروشگاه برنامه انجام شوند.

سفارشی سازی

همانطور که در مفاهیم خاص خودرو ذکر شد، سازگاری و سفارشی‌سازی UI/UX بیش از هر عامل دیگری در خودرو اهمیت دارد. برای حداکثر قابلیت همکاری، استفاده از کتابخانه AAOS Car UI قویاً توصیه می شود. این کتابخانه شامل مؤلفه‌ها و منابعی است که می‌توانند در برنامه‌های خودرو که برای سفارشی‌سازی توسط OEM طراحی شده‌اند، ادغام شوند. به این ترتیب، می‌توان یک APK واحد را به‌گونه‌ای ساخت که رابط کاربری آن را بتوان برای طراحی هر مدل خودرو سفارشی کرد.