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