תהליכי אינטגרציה

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

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

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

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

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

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

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

מערכת Android מספקת את תמידOnHotwordDetector כהפשטה מעל ל-DSP של החומרה. הדבר מספק דרך נוחה שיוך VoiceInteractionService לתבנית קול שפועלת כל הזמן זיהוי קולי. זהו תהליך האינטראקציה הנפוץ והידוע ביותר, שבו המשתמש בקשות ליצור אינטראקציה עם אפליקציה של Voice (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. דוגמה להטמעת טריגרים מסוג TicketT זמינה ב-CarSystemUI, AssistantButton.

הפעלת התכונה 'מצמידים ומשלמים'

איור 4. הפעלת התכונה 'מצמידים ומשלמים'

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

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

התראות

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

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

הפעלת VIA ממרכז האפליקציות

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

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

DSP ו-HAL של אודיו

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

הרשאות

הענקת הרשאות עם הרשאות מערכת

בהינתן שהמשתמש לא יכול להעניק הרשאה מוגבלת, אם VIA מצריך עליהם, יצרני ציוד מקורי חייבים לטעון מראש את ה-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). מידע נוסף על הרשאות ל-handlers שמוגדרים כברירת מחדל זמין במאמר הרשאות משמשת רק ברכיבי handler שמוגדרים כברירת מחדל. אפשר גם להעניק הרשאות מראש באמצעות default-permissions.xml קובץ תצורה. לפרטים על הגבלות על הענקת הרשאות מראש, ראה סעיף 9 ב-Android מסמך הגדרת תאימות (CDD).

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

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

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

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

התאמה אישית

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