תהליכי שילוב

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

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

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

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

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

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

הפעלה של מילת הפעלה

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

הפעלה של מילת הפעלה

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

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

הפעלה של PTT

האפשרות הזו חלה על לחיצה ארוכה או קצרה על לחצן חומרה. ב-AAOS, השירות CarInputService מטפל ב-PTT. בהטמעה שמוגדרת כברירת מחדל, השירות הזה מטפל באירועי קלט שמתקבלים דרך Vehicle 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) שמסכימים להתקנה מראש של האפליקציה הזו הם אלה שצריכים להחליט מה הפעילויות האלה יעשו.

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

DSP ו-HAL אודיו

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

הרשאות

מתן הרשאות עם הרשאות מערכת

מכיוון שהמשתמש לא יכול להעניק הרשאות עם הרשאות מיוחדות, אם ל-VIA יש צורך בהרשאות כאלה, יצרני ציוד מקורי צריכים לטעון מראש את קובץ ה-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>

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

כפי שצוין בקטע בקשת הרשאות, כדי לגשת לפונקציונליות מסוימת, נדרש אישור מהמשתמשים. חלק מההרשאות האלה מוענקות מראש ל-VoiceInteractionService שמוגדר כברירת מחדל (ראו DefaultPermissionGrantPolicy.java). למידע נוסף על הרשאות למטפלים שמוגדרים כברירת מחדל, ראו הרשאות שמשמשות רק במטפלים שמוגדרים כברירת מחדל. אפשר גם להקצות הרשאות מראש באמצעות קובץ התצורה default-permissions.xml. פרטים על ההגבלות לגבי הענקת הרשאות מראש מופיעים בקטע 9 ב מסמך ההגדרה של תאימות (CDD) של Android.

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

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

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

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

התאמה אישית

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