ב-Android 10, חוויית המשתמש משופרת במקרים שבהם צריך להפעיל יותר מפעולת הקלטת אודיו אחת בו-זמנית. לדוגמה, אם המשתמש רוצה לשלוט בשיחת VoIP או במקליט וידאו באמצעות פקודות קוליות שסופקו על ידי שירות נגישות.
מסגרת האודיו מטמיעה את המדיניות שמאפשרת רק לאפליקציות מסוימות עם הרשאות מיוחדות להקליט במקביל לאפליקציות רגילות.
מדיניות ההפעלה בו-זמנית מיושמת על ידי השתקת האודיו שצולם, ולא על ידי מניעת הפעלה של אפליקציה לצילום. ההרשאה הזו מאפשרת למסגרת לטפל באופן דינמי בשינויים במספר ובסוגים של תרחישי שימוש פעילים של לכידה, בלי למנוע מאפליקציה להתחיל לכידה במקרה שבו היא יכולה לשחזר גישה מלאה למיקרופון אחרי שאפליקציה אחרת סיימה לכידה.
המשמעות עבור ה-HAL של האודיו ומערכת המשנה של האודיו היא שהם צריכים לתמוך בכמה שידורי קלט פעילים בו-זמנית, גם אם במקרים מסוימים רק שידור אחד מספק אודיו לא שקט ללקוח פעיל.
דרישות ה-CDD
במאמר בנושא CDD מפורטות הדרישות לתמיכה בהקלטה בו-זמנית.
תיעוד מצבים מ-HAL של אודיו
תרחיש של לכידה בו-זמנית יכול להוביל למצבים שונים מבחינת מספר זרמי הקלט הפעילים, בחירת מכשיר הקלט או הגדרת העיבוד המקדים.
הפעלה בו-זמנית יכולה לקרות בין הפעולות הבאות:
- כמה זרמי קלט ממעבד האפליקציות (AP)
- שיחות קוליות וזרמי קלט
- זרמי קלט ו-DSP של אודיו שמטמיע זיהוי מילת הפעלה עם צריכת חשמל נמוכה
פעילות בו-זמנית של זרמי קלט של AP
קובץ ההגדרות של מדיניות האודיו audio_policy_configuration.xml משמש את מסגרת האודיו כדי לקבוע כמה זרמי קלט אפשר לפתוח ולהפעיל בו-זמנית.
מערכת ה-HAL של האודיו צריכה לתמוך בלפחות מופע אחד של כל פרופיל קלט (mixPort בתפקיד sink) שמופיע בקובץ התצורה הפתוח והפעיל.
בחירת מכשיר
כשכמה לקוחות פעילים מצורפים לאותו מקור נתונים של HAL, המסגרת בוחרת את המכשיר המתאים למקור הנתונים הזה על סמך העדיפות של תרחיש השימוש.
כשכמה זרמי קלט פעילים, לכל זרם יכול להיות בחירת מכשיר שונה.
אם הטכנולוגיה תואמת, מומלץ שמערכת המשנה ו-HAL האודיו יאפשרו ללכוד נתונים ממכשירים שונים, כמו אוזניות Bluetooth ומיקרופון מובנה.
אם יש חוסר תאימות (לדוגמה, אם שני מכשירים חולקים את אותו ממשק אודיו דיגיטלי או את אותו קצה עורפי), ה-HAL של האודיו צריך לבחור איזה סטרימינג ישלוט בבחירת המכשיר.
במקרה הזה:
- המצב שמתקבל חייב להיות עקבי ולהציע את אותה בחירת מכשיר כשחוזרים על אותו תרחיש.
- כשמצב ההפעלה בו-זמנית מסתיים, צריך לנתב את מקור הנתונים הפעיל שנותר למכשיר שביקש את הנתונים במקור.
אם סדר העדיפויות מוגדר על ידי HAL האודיו בין תרחישי שימוש פעילים, צריך לפעול לפי אותו סדר שמופיע ב-source_priority() ב-frameworks/av/services/audiopolicy/common/include/policy.h
בחירת עיבוד מקדים
מסגרת האודיו יכולה לבקש עיבוד מקדים של זרם קלט באמצעות שיטות HAL addEffect() או removeEffect().
לצורך עיבוד מקדים של שידור קלט נתון, מסגרת האודיו מאפשרת רק את ההגדרה שמתאימה לתרחיש השימוש הפעיל עם העדיפות הכי גבוהה בשידור הקלט. עם זאת, יכול להיות שיהיה חפיפה מסוימת במהלך ההפעלה וההשבתה של תרחיש השימוש, ולכן יפעלו שני תהליכים פעילים בו-זמנית (לדוגמה, שני מופעים של ביטול הד), באותו זרם קלט. במקרה כזה, הטמעת ה-HAL בוחרת איזו בקשה תתקבל, עוקבת אחרי הבקשות הפעילות ומשחזרת את המצב הנכון כשמשביתים את אחד התהליכים.
כשכמה שידורים של נתונים פעילים בו-זמנית, יכול להיות שיופעלו בקשות שונות לעיבוד מקדים בשידורים שונים.
ההטמעות של HAL ומערכת המשנה של האודיו צריכות לאפשר החלה של עיבוד מקדים שונה על זרמים שונים, גם אם הם משתפים את אותו מכשיר קלט. כלומר, צריך להחיל את העיבוד המקדים אחרי שמבצעים דה-מולטיפלקס לזרמים ממקור הלכידה הראשי.
אם מסיבות טכניות לא ניתן לעשות זאת במערכת משנה מסוימת של אודיו, ה-HAL של האודיו צריך להחיל כללי עדיפות דומים לאלה שמפורטים בקטע בחירת מכשיר.
שיחה קולית וצילום בו-זמנית מנקודת גישה
הצילום מה-AP יכול להתבצע בזמן ששיחה קולית פעילה. המצב הזה לא חדש ב-Android 10 והוא לא קשור ישירות לתכונת הצילום בו-זמנית, אבל כדאי לציין את ההנחיות לתרחיש הזה.
במהלך השיחה צריך לבצע שני סוגים שונים של לכידה מנקודת הגישה.
תיעוד של נתוני קבלה ושליחה של שיחות
התיעוד של RX ו-TX של השיחה מופעל כשמשתמשים במקור אודיו AudioSource.VOICE_UPLINK או AudioSource.VOICE_DOWNLINK, ו/או במכשיר AudioDevice.IN_TELEPHONY_RX.
ממשקי HAL של אודיו צריכים להיחשף בפרופיל הקלט (mixPort של התפקיד sink)
עם נתיב זמין מהמכשיר AudioDevice.IN_TELEPHONY_RX.
כשמתבצע חיבור לשיחה (מצב אודיו הוא AudioMode.IN_CALL), צריכה להיות אפשרות להפעיל לפחות זרם לכידת נתונים אחד ממכשיר AudioDevice.IN_TELEPHONY_RX.
צילום ממכשירי קלט כשהשיחה פעילה
במהלך שיחה פעילה (מצב אודיו AudioMode.IN_CALL), אמורה להיות אפשרות לפתוח ולהפעיל זרמי קלט מ-AP כמו שמתואר בקטע פעילות בו-זמנית של זרמי קלט מ-AP.
עם זאת, העדיפות לבחירת המכשיר ולעיבוד המקדים צריכה תמיד להיות לשיחה הקולית, במקרה של קונפליקט עם הבקשות מזרמי הקלט של ה-AP.
לכידה בו-זמנית מ-DSP ומנקודת גישה
אם מערכת המשנה של האודיו מכילה DSP שתומך בהקשר אודיו בצריכת חשמל נמוכה או בפונקציות של זיהוי מילת הפעלה, ההטמעה צריכה לתמוך בלכידה בו-זמנית מה-AP ומ-DSP האודיו.
זה כולל גם את הלכידה על ידי ה-DSP במהלך שלב הזיהוי הראשוני וגם את הלכידה על ידי ה-AP עם AudioSource.HOTWORD אחרי שהזיהוי מופעל על ידי ה-DSP.
הדבר הזה צריך לבוא לידי ביטוי בדגל של לכידה בו-זמנית שמדווח על ידי HAL של טריגר קולי באמצעות מתאר ההטמעה: ISoundTriggerHw.Properties.concurrentCapture = true.
בנוסף, ה-HAL של האודיו צריך לחשוף פרופיל ספציפי של קלט לזיהוי מילים מעוררות, שמזוהה על ידי הדגל AudioInputFlag.HW_HOTWORD, ולהזין אותו. ההטמעה צריכה לתמוך בפתיחה ובהפעלה של מספר זרמים בפרופיל הזה, לפחות כמספר מודלי הצליל שאפשר לטעון בו-זמנית על ידי HAL של טריגר הצליל.
אפשר לצלם מהפרופיל הזה של מקור הכניסה בזמן שפרופילים אחרים של מקור הכניסה פעילים.
ההשלכות על הטמעות של Assistant
דרישות בנוגע לשימוש בנתונים ולהודעה למשתמשים
שימוש מקביל במיקרופון עלול לגרום לדליפת נתונים פרטיים של המשתמשים אם נעשה בו שימוש לרעה. לכן, אנחנו דורשים את התנאים והערבויות הבאים לגבי אפליקציות עם הרשאות שנטענות מראש ומבקשות לקבל את תפקיד Assistant.
- הנתונים שנאספים דרך המיקרופון לא צריכים לצאת מהמכשיר, אלא אם המשתמש מקיים אינטראקציה עם Assistant. לדוגמה, אחרי הפעלת מילת ההפעלה.
- אפליקציות שמקשיבות בו-זמנית צריכות לספק רמזים חזותיים למשתמש אחרי זיהוי מילת ההפעלה. כך המשתמשים מבינים ששיחות נוספות יתנהלו דרך אפליקציה אחרת, כמו Assistant.
- המשתמשים צריכים להיות מסוגלים להשבית את המיקרופון או את ההפעלה של Assistant.
- כשהקלטות אודיו נשמרות, המשתמשים צריכים להיות מסוגלים לגשת להקלטות, להאזין להן ולמחוק אותן בכל זמן.
שיפורים פונקציונליים ל-Android 10
עוזרים דיגיטליים לא חוסמים אחד את השני
ב-Android מגרסה 9 ומטה, אם יש במכשיר שני עוזרים קוליים שפועלים תמיד, רק אחד מהם יכול להאזין למילת ההפעלה שלו. לכן, היה צורך לעבור בין שני ממשקי Assistant. ב-Android 10, אפשר להגדיר את Assistant כברירת מחדל כך שתאזין במקביל ל-Assistant אחרת. כתוצאה מכך, חוויית המשתמש של משתמשי שני העוזרים הדיגיטליים חלקה הרבה יותר.
אפליקציות שמשאירות את המיקרופון פתוח
כשמיקרופון פתוח באפליקציות כמו Shazam או Waze, Assistant שמוגדרת כברירת מחדל עדיין יכולה להאזין למילת ההפעלה.
באפליקציות של Assistant שלא מוגדרות כברירת מחדל, אין שינוי בהתנהגות ב-Android 10.
דוגמה להטמעה של HAL של אודיו
דוגמה להטמעה של אודיו HAL בהתאם להנחיות שבמסמך הזה זמינה ב-AOSP.