אודיו

סמל Android Audio HAL

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

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

ארכיטקטורת אודיו

איור 1. ארכיטקטורת אודיו של אנדרואיד

מסגרת יישום
מסגרת האפליקציה כוללת את קוד האפליקציה, המשתמש בממשקי ה-API של android.media כדי ליצור אינטראקציה עם חומרת אודיו. באופן פנימי, קוד זה קורא למחלקות דבק תואמות של JNI כדי לגשת לקוד המקורי המקיים אינטראקציה עם חומרת אודיו.
JNI
קוד JNI המשויך ל- android.media קורא לקוד מקורי ברמה נמוכה יותר כדי לגשת לחומרת אודיו. JNI ממוקם frameworks/base/core/jni/ וב- frameworks/base/media/jni .
מסגרת מקומית
המסגרת המקורית מספקת מקבילה מקורית לחבילת android.media , וקוראת ל-Binder IPC proxy כדי לגשת לשירותים הספציפיים לאודיו של שרת המדיה. קוד המסגרת המקורי נמצא ב- frameworks/av/media/libmedia .
קלסר IPC
פרוקסי Binder IPC מקלים על תקשורת על פני גבולות תהליך. פרוקסי ממוקמים frameworks/av/media/libmedia ומתחילים באות "אני".
שרת מדיה
שרת המדיה מכיל שירותי שמע, שהם הקוד בפועל שמקיים אינטראקציה עם יישומי HAL שלך. שרת המדיה ממוקם frameworks/av/services/audioflinger .
HAL
ה-HAL מגדיר את הממשק הסטנדרטי שאליו שירותי שמע מתקשרים ושאתה חייב ליישם כדי שחומרת השמע שלך תפעל כהלכה. לפרטים נוספים, עיין בממשק האודיו HAL והערות בקבצי *.hal של ספריית גרסת HAL המתאימה.
נהג ליבה
מנהל ההתקן האודיו יוצר אינטראקציה עם החומרה ויישום ה-HAL שלך. אתה יכול להשתמש בארכיטקטורת סאונד מתקדמת של לינוקס (ALSA), מערכת סאונד פתוחה (OSS), או מנהל התקן מותאם אישית (HAL הוא אגנסטי לנהגים).

הערה : אם אתה משתמש ב-ALSA, אנו ממליצים על external/tinyalsa עבור חלק המשתמש של הנהג בגלל הרישוי התואם שלו (ספריית מצב המשתמש הסטנדרטית היא ברישיון GPL).

אודיו מקורי של אנדרואיד המבוסס על Open SL ES (לא מוצג)
ממשק API זה חשוף כחלק מ- Android NDK ונמצא באותה רמת ארכיטקטורה של android.media .