כדי להשיג את זמן טעינת האודיו (audio latency) הנמוך ביותר, מומלץ להשתמש ב-Oboe.
אבוב
Oboe משתמש באודיו מקורי ומבוסס על AAudio ל-Android 8.1 (רמת API 27) ומעלה ועל OpenSL ES. כדי להשיג את זמן הטעינה הקצר ביותר במכשיר, צריך להגדיר את setPerformanceMode(oboe::PerformanceMode::LowLatency) ואת setSharingMode(oboe::SharingMode::Exclusive). מידע נוסף על Oboe זמין במדריך לתחילת העבודה, README.md ובמדריך המלא. אפשר לראות אפליקציה לדוגמה שמשתמשת ב-Oboe באפליקציית Soundboard.
אם אתם משתמשים ב-AudioTrack כדי ליצור ב-Java זרמי אודיו פלט לאפליקציות שרגישות לזמן אחזור, אתם צריכים להשתמש במצב PERFORMANCE_MODE_LOW_LATENCY.
רשימת משימות להטמעה
כדי להשתמש באודיו המקורי של Android:
- מורידים ומתקינים את Android NDK.
- פועלים לפי המדריך לתחילת העבודה בנושא Oboe.
- Call
setPerformanceMode(oboe::PerformanceMode::LowLatency)andsetSharingMode(oboe::SharingMode::Exclusive)on the Oboe builder. משתמשים בגודל המומלץ של שטח אחסון זמני מקורי ובקצב הדגימה שמוחזרים על ידי
android.media.AudioManager.getProperty(java.lang.String).חשוב לשמור על קצרים את ה-callback handlers, בלי שימוש במעבד שמתפרץ או חסימה בלתי מוגבלת. הימנעו מהיפוך סדר העדיפויות.
מומלץ להשתמש באלגוריתמים לא חוסמים כדי ליצור תקשורת בין מטפלי הקריאות החוזרות של הקלט והפלט, ובין מטפלי הקריאות החוזרות לבין שאר האפליקציה.
android-ndk
אם יש לכם שאלות לגבי השימוש באודיו מקורי של Android, אתם יכולים להצטרף לקבוצת הדיון android-ndk.
דיווח על באגים ב-Oboe
אם נתקלתם בבעיות בשימוש ב-Oboe, אתם יכולים לדווח על באג.
סרטונים
- איך מתחילים להשתמש ב-Oboe
- Low Latency Audio - Because Your Ears Are Worth It (Android Dev Summit 2018)
- Winning on Android - How to optimize an Android audio app (Android Developer Challenge 2018)
- High Performance Audio on Android (Google I/O 2013)
- יצירת חוויות מולטימדיה נהדרות ב-Android (Google I/O 2014)
- זמן טעינת אודיו (audio latency): גדלי מאגר (100 Days of Google Dev)