ב-Android 10 יש שיפור בחוויית המשתמש במקרים שבהם נדרשת יותר מהתקנת הקלטת אודיו אחת בו-זמנית, למשל אם המשתמש רוצה לשלוט בשיחה ב-VoIP או במצלמת וידאו באמצעות פקודות קוליות שמספק שירות נגישות.
מסגרת האודיו מיישמת את המדיניות שמאפשרת רק לאפליקציות מסוימות עם הרשאות לבצע הקלטה בו-זמנית עם אפליקציות רגילות.
המדיניות בנושא בו-זמניות מיושמת על ידי השתקת האודיו שצולם, ולא על ידי מניעת היכולת של האפליקציה להתחיל את הצילום. כך המסגרת יכולה לטפל באופן דינמי בשינויים במספר ובסוגים של תרחישים לדוגמה של צילום פעיל, בלי למנוע מאפליקציה להתחיל לצלם במקרה שבו היא יכולה לשחזר גישה מלאה למיקרופון אחרי שאפליקציה אחרת סיימה לצלם.
כתוצאה מכך, כשמערכות המשנה של אודיו ואודיו הן חייבות לתמוך בו-זמנית במספר שידורי קלט פעילים, גם אם במקרים מסוימים רק שידור אחד מספק אודיו לא שקט ללקוח פעיל.
הדרישות של CDD
בדף CDD מפורטות הדרישות לתמיכה בו-זמנית בצילום.
תיעוד מצבים מאודיו HAL
תרחיש של צילום בו-זמנית יכול להוביל למצבים שונים מבחינת מספר מקורות הקלט הפעילים, בחירת מכשיר הקלט או הגדרת העיבוד המקדים.
יכול להיות אירוע בו-זמנית בין האירועים הבאים:
- כמה מקורות קלט ממעביד האפליקציות (AP)
- מקורות קלט ושיחה קולית
- מקורות קלט ו-DSP אודיו שמטמיעים זיהוי של מילת הפעלה עם צריכת אנרגיה נמוכה
פעילות בו-זמנית של מקורות קלט של AP
קובץ התצורה של מדיניות האודיו audio_policy_configuration.xml
משמש את מסגרת האודיו כדי לקבוע כמה שידורי קלט ניתן לפתוח ולהפעיל בו-זמנית.
לפחות, HAL האודיו צריך לתמוך במכונה אחת לפחות של כל פרופיל קלט (mixPort
של התפקיד sink
) שמופיע בקובץ התצורה הפתוח והפעיל.
בחירת מכשיר
כשיש כמה לקוחות פעילים שמחוברים לאותו מקור קלט של HAL, המסגרת בוחרת את המכשיר המתאים למקור הקלט הזה על סמך העדיפות של תרחיש לדוגמה.
כשיש כמה מקורות קלט פעילים, לכל מקור קלט יכולה להיות בחירת מכשיר שונה.
אם הטכנולוגיה תואמת, מומלץ שה-HAL של האודיו והתת-מערכת יאפשרו לצלם סטרימינגים שונים ממכשירים שונים, כמו אוזניות Bluetooth ומיקרופון מובנה.
אם יש אי-תאימות (לדוגמה, שני מכשירים משתפים את אותו ממשק אודיו דיגיטלי או את אותו קצה עורפי), ה-HAL של האודיו צריך לבחור איזה סטרימינג ישלוט בבחירת המכשיר.
במקרה כזה:
- המצב שנוצר חייב להיות עקבי ולהציע את אותה בחירת מכשיר כשאותו תרחיש חוזר על עצמו.
- כשמצב בו-זמניות (concurrency) מסתיים, השידור הפעיל שנותר צריך לנתב למכשיר שביקשתם בהתחלה בשידור הזה.
אם ה-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
שעוזרות לאפליקציות Assistant לא לחסום אחת את השנייה
ב-Android מגרסה 9 ומטה, כשיש במכשיר שתי תוכנות Assistant שפועלות תמיד, רק אחת מהן יכולה להאזין למילות המפתח שלה. לכן היה צורך לעבור בין שני ה-Assistant. ב-Android 10, Assistant שמוגדרת כברירת מחדל יכולה להאזין בו-זמנית עם Assistant השנייה. כך המשתמשים יכולים ליהנות מחוויה חלקה יותר עם שתי העוזרות.
אפליקציות שמשאירות את המיקרופון פתוח
כשאפליקציות כמו Shazam או Waze משאירות את המיקרופון פתוח, Assistant שמוגדרת כברירת מחדל עדיין יכולה להקשיב למילות ההפעלה.
לא יהיה שינוי בהתנהגות של אפליקציות Assistant שלא מוגדרות כברירת המחדל ב-Android 10.
דוגמה להטמעת HAL של אודיו
דוגמה להטמעת HAL של אודיו שתואמת להנחיות במסמך הזה מופיעה ב-AOSP.