אינטגרציה זורמת

בחירת ה-VIA הפעיל נעשית על ידי ManageAssistActivity ב-CarSettings. זרימה זו מופעלת על ידי אפליקציית PackageInstaller , כחלק מקטע אפליקציות ברירת מחדל במסך ההגדרות.

אפליקציות ברירת מחדל במסך ההגדרות

איור 1. אפליקציות ברירת מחדל במסך ההגדרות

ה-VIA שנבחר נחשף למערכת בשתי דרכים:

  1. כחלק משירות מערכת RolesManager
  2. על ידי VoiceInteractionManagerService דרך ה-API הפנימי AssistUtils .

ניתן לקבל רשימה של VIA מועמדים באמצעות RolesManager עם שם התפקיד android.app.role.ASSISTANT .

הפעלת מילת עזר

אנדרואיד מספקת את AlwaysOnHotwordDetector כהפשטה על גבי DSP החומרה. זה מספק דרך נוחה לשייך VoiceInteractionService למודל קול לזיהוי קול תמידי באנרגיה נמוכה. זהו זרימת האינטראקציה הנפוצה והידועה ביותר, שבה המשתמש מבקש ליצור אינטראקציה עם יישום קולי (VA) כדי ליזום שיחה חדשה. הפעלות קוליות שהתחילו כך מזוהות עם SHOW_SOURCE_ASSIST_GESTURE flag .

הפעלת מילת עזר

איור 2. הפעלת מילת עזר

אגדה. שירותי מערכת מופיעים בצבע תכלת, רכיבי VIA בירוק.

הפעלת PTT

זה חל על לחיצת כפתור חומרה ארוכה או קצרה. ב-AAOS, PTT מטופל על ידי CarInputService . ביישום ברירת מחדל, שירות זה מטפל באירועי קלט המתקבלים דרך ה-HAL של הרכב, ובמקרה הספציפי של אינטראקציה קולית, הוא מיישם את ההיגיון הבא על אירועי מפתח:

  • אירועי PTT קצרים ( KeyEvent.KEYCODE_VOICE_ASSIST ) מופנים אל VoiceInteractionManagerService כדי להתחיל הפעלה קולית חדשה.
  • אירועי PTT ארוכים מועברים תחילה למקלטי הקרנה (לדוגמה, Android Auto או CarPlay), לאחר מכן למכשירים המחוברים ל-Bluetooth ולבסוף לאפליקציית VIA המקומית.

הפעלות שהתחילו באמצעות זרימה זו מזוהות עם SHOW_SOURCE_PUSH_TO_TALK .

הפעלת PTT

איור 3. הפעלת PTT

כדי לשלב לחצן שליטה קולית בחומרה ל-AAOS, ראה שילוב קלט מפתח לרכב .

הפעלת הקש כדי לדבר (או כפתור תוכנה)

הפעלת אינטראקציה קולית מממשק המשתמש של המערכת מתבצעת באמצעות AssistUtil . זהו ממשק API של מערכת נסתר שניתן להשתמש בו רק על ידי אפליקציות מערכת מצורפות כגון ממשק המשתמש של המערכת המאפשר:

  • אינטראקציה עם VoiceInteractionManagerService כדי להתחיל הפעלות שליטה קולית.
  • קבע מהו ה-VIA שנבחר כעת.

כדי להציג באופן דינמי את אפליקציית VIA שנבחרה, ממשק המשתמש של המערכת יכול להשתמש RoleManager ולעקוב אחר שינויים בבעל התפקיד עבור ROLE_ASSISTANT . דוגמה לאיך ליישם הפעלת TTT ניתן למצוא ב-CarSystemUI, AssistantButton .

הפעלת הקש כדי לדבר

איור 4. הפעלת הקש כדי לדבר

עוזר קולי הקש לקריאה (TTR)

במכונית, התראות שפורסמו למרכז ההתראות המזוהות כהתראות INBOX או INBOX_IN_GROUP (לדוגמה, הודעות SMS) כוללות לחצן הפעלה, המאפשר למשתמש לקרוא התראות בקול על ידי ה-VIA שנבחר, ולחלופין, להשיב בקול.

התראות

איור 5. הודעות

למידע נוסף על איך ליישם זרימה זו, ראה טיפול בפקודות העברת הודעות .

הפעל את VIA ממשגר המכוניות

כמו כל אפליקציה אחרת, VIA יכול לכלול פעילות משגר אחת או יותר במניפסט שלהם. זה תלוי במפתח האפליקציה וב-OEM שיסכימו להתקין מראש את האפליקציה הזו כדי להחליט מה הפעילויות האלה יעשו.

חָשׁוּב. ברכב, כל הפעילויות, כולל פעילויות המערכת, כפופות להגבלות UX בזמן נהיגה. אם החוויה שברצונך להפעיל מסמל משגר חייבת להיות זמינה בזמן נהיגה, הוסף אותה לרשימת ההיתרים (אם אתה יצרן ציוד מקורי) או ציין את הפעילות עם מטא נתונים distractionOptimized . למידע נוסף, ראה הנחיות להסחת דעת נהגים .

DSP ואודיו HAL

הקפד לעיין בהנחיות המעודכנות לגבי הקלטת אודיו שפועלת בו-זמנית ו-HAL אודיו ב- Concurrent capture . לגישה לממשקי ה-API הללו עשויה להיות השפעה משמעותית על הביצועים של זיהוי מילות הפעלה, כפי שהוסבר ב- Reponing towords .

הרשאות

הענק הרשאות מוסמכות למערכת

בהתחשב בכך שהמשתמש לא יכול להעניק הרשאה מוסמכת, אם VIA זקוק לאחת מהן, יצרני OEM חייבים לטעון מראש את ה-APK שלהם בתמונות המערכת שלהם, ולהעניק הרשאות אלו במפורש ב-builds שלהם. ראה בקשת הרשאות .

כדי לעשות זאת, הוסף תלות ברשימת הרשאות לפרויקט שלך:

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) .

חָשׁוּב. בכל המקרים, רק לברירת המחדל של ה-VIA ההרשאות הללו יוענקו מראש. אם למערכת יש יותר מ-VIA אחד מראש, ה-VIA שאינו ברירת המחדל חייב לבקש הרשאות מפורשות למשתמש כחלק מההגדרה שלו או במהלך השימוש הראשון.

הפצה (התקנה מראש ופריסה של עדכונים)

VIA מותקנים מראש חייבים לחיות תחת מחיצות ותיקיות /product/priv-apps או /vendor/priv-apps (ראה עוד על מחיצות בסקירה כללית של מחיצות ובניית מחיצות מוצר ).

במקרה השני, בהתחשב בכך שניתן לעדכן את מחיצת הספק בנפרד מהמערכת, אפליקציות המתארחות כאן לא יוכלו לגשת ל-@hide system APIs. בהתאם למיקום האפליקציות המותקנות מראש, עדכונים יכולים להתבצע כ-OTA (ראה עדכוני OTA ) או באמצעות עדכוני אפליקציות מחנות אפליקציות.

התאמה אישית

כפי שהוזכר במושגים ספציפיים לרכב , עקביות UI/UX והתאמה אישית חשובים יותר ברכב מאשר בכל גורם צורה אחר. לקבלת יכולת פעולה הדדית מקסימלית, מומלץ מאוד להשתמש בספריית ממשק המשתמש של AAOS Car . ספרייה זו כוללת רכיבים ומשאבים שניתן לשלב באפליקציות רכב שתוכננו להתאמה אישית על ידי יצרני OEM. בדרך זו, ניתן לבנות APK בודד בצורה כזו שניתן להתאים את ממשק המשתמש שלו לעיצוב של כל דגם מכונית.