Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

שֶׁמַע

סמל HAL של Android Audio

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

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

אדריכלות שמע

איור 1. ארכיטקטורת שמע של Android

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

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

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