เสียง

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

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

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

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

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

กรอบการใช้งาน
กรอบงานแอปพลิเคชันประกอบด้วยโค้ดของแอป ซึ่งใช้ android.media API เพื่อโต้ตอบกับฮาร์ดแวร์เสียง ภายใน โค้ดนี้จะเรียกคลาสกาว JNI ที่เกี่ยวข้องเพื่อเข้าถึงโค้ดเนทีฟที่โต้ตอบกับฮาร์ดแวร์เสียง
เจเอ็นไอ
รหัส JNI ที่เกี่ยวข้องกับ android.media เรียกโค้ดเนทีฟระดับล่างเพื่อเข้าถึงฮาร์ดแวร์เสียง JNI ตั้งอยู่ใน frameworks/base/core/jni/ และ frameworks/base/media/jni
กรอบงานเนทิฟ
เฟรมเวิร์กเนทิฟมอบแพ็คเกจเนทิฟที่เทียบเท่ากับแพ็คเกจ android.media โดยเรียกพร็อกซี Binder IPC เพื่อเข้าถึงบริการเฉพาะเสียงของเซิร์ฟเวอร์สื่อ โค้ดเฟรมเวิร์กดั้งเดิมอยู่ใน frameworks/av/media/libmedia
เครื่องผูกไอพีซี
พร็อกซี Binder IPC อำนวยความสะดวกในการสื่อสารเกินขอบเขตกระบวนการ พร็อกซีอยู่ใน frameworks/av/media/libmedia และขึ้นต้นด้วยตัวอักษร "I"
เซิร์ฟเวอร์มีเดีย
เซิร์ฟเวอร์สื่อประกอบด้วยบริการด้านเสียง ซึ่งเป็นโค้ดจริงที่โต้ตอบกับการใช้งาน HAL ของคุณ เซิร์ฟเวอร์สื่ออยู่ใน frameworks/av/services/audioflinger
ฮาล
HAL กำหนดอินเทอร์เฟซมาตรฐานที่บริการเสียงเรียกใช้ และคุณต้องนำไปใช้เพื่อให้ฮาร์ดแวร์เสียงของคุณทำงานได้อย่างถูกต้อง สำหรับรายละเอียดเพิ่มเติม โปรดดู อินเทอร์เฟซเสียง HAL และความคิดเห็นในไฟล์ *.hal ของไดเร็กทอรีเวอร์ชัน HAL ที่เกี่ยวข้อง
ไดรเวอร์เคอร์เนล
ไดรเวอร์เสียงโต้ตอบกับฮาร์ดแวร์และการใช้งาน HAL ของคุณ คุณสามารถใช้ Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) หรือไดร์เวอร์แบบกำหนดเองได้ (HAL คือไดร์เวอร์ไม่เชื่อเรื่องพระเจ้า)

หมายเหตุ : หากคุณใช้ ALSA เราขอแนะนำ external/tinyalsa สำหรับส่วนผู้ใช้ของไดรเวอร์ เนื่องจากมีใบอนุญาตที่เข้ากันได้ (ไลบรารีโหมดผู้ใช้มาตรฐานคือ GPL-licensed)

เสียงเนทีฟของ Android ที่ใช้ Open SL ES (ไม่แสดง)
API นี้เปิดเผยโดยเป็นส่วนหนึ่งของ Android NDK และอยู่ในระดับสถาปัตยกรรมเดียวกับ android.media