انتخاب VIA فعال توسط ManageAssistActivity
در CarSettings انجام می شود. این جریان توسط برنامه PackageInstaller
به عنوان بخشی از بخش برنامههای پیشفرض در صفحه تنظیمات فعال میشود.
شکل 1. برنامه های پیش فرض در صفحه تنظیمات
VIA انتخاب شده به دو صورت در معرض سیستم قرار می گیرد:
- به عنوان بخشی از سرویس سیستم
RolesManager
- توسط
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
شناسایی می شوند.
شکل 3. تحریک PTT
برای ادغام یک دکمه کنترل صوتی سخت افزاری با AAOS، به یکپارچه سازی ورودی کلید خودرو مراجعه کنید.
راه اندازی Tap-to-Talk (یا دکمه نرم افزار)
فعال کردن تعامل صوتی از رابط کاربری سیستم با استفاده از AssistUtil انجام می شود. این یک API سیستم مخفی است که فقط میتواند توسط برنامههای سیستم همراه مانند رابط کاربری سیستم که فعال میکند استفاده شود:
- تعامل با
VoiceInteractionManagerService
برای شروع جلسات کنترل صدا. - تعیین کنید که VIA در حال حاضر انتخاب شده است.
برای ارائه پویا برنامه VIA انتخاب شده، رابط کاربری سیستم میتواند از RoleManager
استفاده کند و تغییرات روی دارنده نقش را برای ROLE_ASSISTANT
دنبال کند. نمونه ای از نحوه پیاده سازی راه اندازی TTT را می توان در CarSystemUI، AssistantButton
یافت.
شکل 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 واحد را بهگونهای ساخت که رابط کاربری آن را بتوان برای طراحی هر مدل خودرو سفارشی کرد.