צילום בו-זמנית

‫Android 10 משפר את חוויית המשתמש במקרים שבהם צריך להפעיל יותר מפעולת הקלטה אחת של אודיו בו-זמנית. לדוגמה, אם המשתמש רוצה לשלוט בשיחת VoIP או במקליט וידאו באמצעות פקודות קוליות שסופקו על ידי שירות נגישות.

מסגרת האודיו מטמיעה את המדיניות שמאפשרת רק לאפליקציות מסוימות עם הרשאות מיוחדות להקליט במקביל לאפליקציות רגילות.

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

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

הדרישות של CDD

במאמר בנושא CDD מפורטות הדרישות לתמיכה בהקלטה בו-זמנית.

תיעוד מצבים מ-Audio 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.

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

אפליקציות שמשאירות את המיקרופון פתוח

כשמיקרופון פתוח באפליקציות כמו Shazam או Waze, יכול להיות ש-Assistant שמוגדרת כברירת מחדל עדיין מאזינה למילת ההפעלה.

באפליקציות של Assistant שלא מוגדרות כברירת מחדל, אין שינוי בהתנהגות ב-Android 10.

דוגמה להטמעה של HAL לאודיו

דוגמה להטמעה של HAL אודיו בהתאם להנחיות שבמסמך הזה זמינה ב-AOSP.