Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

เสียง

ไอคอน Android Audio HAL

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

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

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

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

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

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

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