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

איור 1. ארכיטקטורת האודיו של Android
- מסגרת אפליקציה
- מסגרת האפליקציה כוללת את קוד האפליקציה, שמשתמש בממשקי ה-API של android.media כדי ליצור אינטראקציה עם חומרת האודיו. באופן פנימי, הקוד הזה קורא למחלקות JNI glue תואמות כדי לגשת לקוד ה-Native שמתקשר עם חומרת האודיו.
- JNI
-
קוד ה-JNI שמשויך לקריאות android.media קורא לקוד מקורי ברמה נמוכה יותר כדי לגשת לחומרת האודיו. JNI נמצא ב-
frameworks/base/core/jni/
וב-frameworks/base/media/jni
. - מסגרת מקורית
-
המסגרת המקורית מספקת מקבילה מקורית לחבילה android.media, וקוראת ל-proxies של Binder IPC כדי לגשת לשירותים הספציפיים לאודיו של שרת המדיה.
קוד המסגרת המקורי נמצא ב-
frameworks/av/media/libmedia
. - Binder IPC
-
פרוקסי של Binder IPC מאפשרים תקשורת בין תהליכים. כתובות ה-Proxy ממוקמות ב-
frameworks/av/media/libmedia
ומתחילות באות I. - שרת מדיה
-
שרת המדיה מכיל שירותי אודיו, שהם הקוד בפועל שמקיים
אינטראקציה עם יישומי ה-HAL שלכם. שרת המדיה נמצא במיקום
frameworks/av/services/audioflinger
. - HAL
-
שכבת ה-HAL מגדירה את הממשק הסטנדרטי שאליו שירותי האודיו מתקשרים, ושצריך להטמיע כדי שציוד האודיו יפעל בצורה תקינה. פרטים נוספים מופיעים בממשק HAL של אודיו ובהערות בקובצי
*.hal
של ספריית גרסת ה-HAL המתאימה. - מנהל התקן של ליבה
-
מנהל התקן האודיו מבצע אינטראקציה עם החומרה ועם הטמעת HAL. אפשר להשתמש ב-Advanced Linux Sound Architecture (ALSA), ב-Open Sound System (OSS) או בדרייבר בהתאמה אישית (HAL לא תלוי בדרייבר).
הערה: אם אתם משתמשים ב-ALSA, מומלץ להשתמש ב-
external/tinyalsa
עבור חלק המשתמש של מנהל ההתקן, כי הרישוי שלו תואם (הספרייה הרגילה במצב משתמש היא ברישיון GPL). - אודיו מובנה ב-Android שמבוסס על Open SL ES (לא מוצג)
- API הזה נחשף כחלק מ-Android NDK והוא באותה רמת ארכיטקטורה כמו android.media.