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

איור 1. אפליקציות ברירת מחדל במסך ההגדרות
ה-VIA שנבחרה חשופה למערכת בשתי דרכים:
- כחלק משירות המערכת
RolesManager - באמצעות
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. בהטמעה שמוגדרת כברירת מחדל, השירות הזה מטפל באירועי קלט שמתקבלים דרך שכבת הפשטת חומרה לרכב, ובמקרה הספציפי של אינטראקציה קולית, הוא מחיל את הלוגיקה הבאה על אירועים מרכזיים:
- אירועים קצרים של PTT (
KeyEvent.KEYCODE_VOICE_ASSIST) מופנים אלVoiceInteractionManagerServiceכדי להתחיל סשן קולי חדש. - אירועי PTT ארוכים מועברים קודם למקלטי הקרנה (לדוגמה, Android Auto או CarPlay), אחר כך למכשירים שמחוברים באמצעות Bluetooth ולבסוף לאפליקציית VIA המקומית.
סשנים שמתחילים באמצעות התהליך הזה מזוהים באמצעות SHOW_SOURCE_PUSH_TO_TALK.

איור 3. הפעלה של PTT
יש מידע על שילוב של כפתור בקרת קול בחומרה ב-AAOS במאמר על שילוב של קלט מפתח לרכב.
הפעלה של "לוחצים ומתחילים לדבר" (או כפתור תוכנה)
מפעילים אינטראקציה קולית מממשק המשתמש של המערכת באמצעות AssistUtil. זהו ממשק API מוסתר של מערכת שרק אפליקציות מערכת בחבילה, כמו ממשק המשתמש של המערכת, יכולות להשתמש בו. הוא מאפשר:
- אינטראקציה עם
VoiceInteractionManagerServiceכדי להתחיל סשנים של שליטה באמצעות הקול. - מזהים את ה-VIA שנבחר כרגע.
כדי להציג באופן דינמי את אפליקציית ה-VIA שנבחרה, ממשק המשתמש של המערכת יכול להשתמש ב-RoleManager
ולעקוב אחרי שינויים בבעל התפקיד של ROLE_ASSISTANT.
דוגמה להטמעה של הפעלת TTT אפשר למצוא ב-CarSystemUI, AssistantButton.

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

איור 5. התראות
יש מידע נוסף על תהליך ההטמעה במאמר טיפול בפקודות של הודעות.
הפעלת VIA ממרכז האפליקציות ברכב
כמו כל אפליקציה אחרת, אפליקציות VIA יכולות לכלול פעילות אחת או יותר של מרכז האפליקציות במניפסט שלהן. המפתחים של האפליקציה והיצרן המקורי שמסכים להתקין מראש את האפליקציה הזו הם אלה שמחליטים מה הפעילויות האלה יעשו.
חשוב. ב-Automotive, כל הפעילויות, כולל פעילויות המערכת, כפופות להגבלות על חוויית המשתמש בזמן הנהיגה. אם אתם רוצים שהחוויה שתפעילו מסמל במרכז האפליקציות תהיה זמינה בזמן הנהיגה, עליכם להוסיף אותה לרשימת ההיתרים (אם אתם יצרני ציוד מקורי) או להוסיף לה הערה עם המטא-נתונים distractionOptimized. יש מידע נוסף בהנחיות בנושא הסחת דעת של נהגים.
DSP ו-HAL של אודיו
חשוב לעיין בהנחיות המעודכנות לגבי הקלטת אודיו בו-זמנית במצב "תמיד מופעל" ו-HAL של אודיו במאמר Concurrent capture (הקלטה בו-זמנית). הגישה לממשקי ה-API האלה עשויה להשפיע באופן משמעותי על הביצועים של זיהוי מילות הפעלה, כפי שמוסבר במאמר Responding to hotwords (תגובה למילות הפעלה).
הרשאות
מתן הרשאות מערכת
מכיוון שהמשתמש לא יכול להעניק הרשאות מערכת, אם ל-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>
הרשאות מסוכנות שניתנות מראש
כפי שצוין בקטע בקשת הרשאות, כדי לגשת לפונקציה מסוימת, VIA זקוקה לאישור מהמשתמשים. חלק מההרשאות האלה מוענקות מראש ל-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 יחיד שניתן להתאים אישית את ממשק המשתמש שלו לעיצוב של כל דגם רכב.