เสียง

ไอคอน HAL เสียงของ Android

เลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ของเสียงใน Android จะเชื่อมต่อ API ของเฟรมเวิร์กเฉพาะเสียงในระดับที่สูงขึ้นใน android.media กับไดรเวอร์และฮาร์ดแวร์เสียงที่อยู่เบื้องหลัง ส่วนนี้มีวิธีการติดตั้งใช้งานและเคล็ดลับในการปรับปรุงประสิทธิภาพ

สถาปัตยกรรมเสียงของ Android จะกำหนดวิธีใช้ฟังก์ชันเสียงและชี้ไปยังซอร์สโค้ดที่เกี่ยวข้องซึ่งเกี่ยวข้องกับการใช้งาน

สถาปัตยกรรมเสียง

รูปที่ 1 สถาปัตยกรรมเสียงของ Android

เฟรมเวิร์กแอปพลิเคชัน
เฟรมเวิร์กแอปพลิเคชันประกอบด้วยโค้ดแอป ซึ่งใช้ android.media API เพื่อโต้ตอบกับฮาร์ดแวร์เสียง โค้ดนี้จะเรียกใช้คลาส JNI Glue ที่เกี่ยวข้องภายในเพื่อเข้าถึงโค้ดเนทีฟที่โต้ตอบกับฮาร์ดแวร์เสียง
JNI
โค้ด JNI ที่เชื่อมโยงกับ android.media จะเรียกโค้ดเนทีฟระดับล่างเพื่อเข้าถึงฮาร์ดแวร์เสียง JNI อยู่ใน frameworks/base/core/jni/ และ frameworks/base/media/jni
เฟรมเวิร์กเนทีฟ
เฟรมเวิร์กเนทีฟมีแพ็กเกจเนทีฟที่เทียบเท่ากับแพ็กเกจ android.media ซึ่งเรียกใช้พร็อกซี Binder IPC เพื่อเข้าถึงบริการเฉพาะเสียงของเซิร์ฟเวอร์สื่อ โค้ดเฟรมเวิร์กแบบเนทีฟอยู่ใน frameworks/av/media/libmedia
Binder IPC
พร็อกซี IPC ของ Binder ช่วยให้การสื่อสารข้ามขอบเขตโปรเซสง่ายขึ้น โดยจะอยู่ในส่วน 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