ב-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
הצילום מה-AP יכול להתבצע במהלך שיחת קול פעילה. המצב הזה לא חדש ב-Android 10 והוא לא קשור ישירות לתכונה של צילום בו-זמנית, אבל כדאי לציין את ההנחיות לגבי התרחיש הזה.
במהלך שיחה נדרשים שני סוגים שונים של תיעוד מה-AP.
תיעוד של שיחות RX ו-TX
הצילום של שיחות RX ו-TX מופעל על ידי שימוש במקור אודיו AudioSource.VOICE_UPLINK
או AudioSource.VOICE_DOWNLINK
, ו/או במכשיר AudioDevice.IN_TELEPHONY_RX
.
צריך לחשוף את HALs של האודיו בפרופיל הקלט (mixPort
בתפקיד sink
) עם מסלול זמין מהמכשיר AudioDevice.IN_TELEPHONY_RX
.
כשהשיחה מחוברת (מצב האודיו הוא AudioMode.IN_CALL
), צריכה להיות אפשרות לקבל לפחות שידור צילום פעיל אחד מהמכשיר AudioDevice.IN_TELEPHONY_RX
.
תיעוד ממכשירי קלט כשהשיחה פעילה
כששיחה פעילה (מצב האודיו הוא AudioMode.IN_CALL
), צריך להיות אפשר לפתוח ולהפעיל מקורות קלט מה-AP, כפי שמפורט בקטע פעילות בו-זמנית של מקורות קלט של AP.
עם זאת, העדיפות לבחירת המכשיר ולעיבוד המקדים צריכה תמיד להיות מבוססת על השיחה הקולית, למקרה שיהיה קונפליקט עם הבקשות ממקורות הקלט של AP.
תיעוד בו-זמנית מ-DSP ומ-AP
כשמערכת המשנה של האודיו מכילה מעבד 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
Assistants לא חוסמות אחת את השנייה
ב-Android מגרסה 9 ומטה, כשיש במכשיר שתי תוכנות Assistant שפועלות תמיד, רק אחת מהן יכולה להאזין למילות המפתח שלה. לכן, היה צורך לעבור בין שתי Assistant. ב-Android 10, Assistant שמוגדרת כברירת מחדל יכולה להאזין בו-זמנית עם Assistant השנייה. כך המשתמשים יכולים ליהנות מחוויה חלקה יותר עם שתי העוזרות.
אפליקציות שמשאירות את המיקרופון פתוח
כשאפליקציות כמו Shazam או Waze משאירות את המיקרופון פתוח, Assistant שמוגדרת כברירת מחדל עדיין יכולה להאזין למילות ההפעלה.
באפליקציות Assistant שאינן ברירת המחדל, אין שינוי בהתנהגות ב-Android 10.
דוגמה להטמעת HAL של אודיו
דוגמה להטמעת HAL של אודיו שתואמת להנחיות במסמך הזה מופיעה ב-AOSP.