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