
Lớp trừu tượng phần cứng âm thanh (HAL) của Android kết nối các API khung cấp cao hơn, dành riêng cho âm thanh trong android.media với phần cứng và trình điều khiển âm thanh bên dưới. Phần này bao gồm hướng dẫn triển khai và mẹo để cải thiện hiệu suất.
Kiến trúc âm thanh Android xác định cách triển khai chức năng âm thanh và trỏ đến mã nguồn liên quan có liên quan đến việc triển khai.

Hình 1. Kiến trúc âm thanh Android
- Khung ứng dụng
- Khung ứng dụng bao gồm mã ứng dụng, sử dụng các API android.media để tương tác với phần cứng âm thanh. Bên trong, mã này gọi các lớp keo JNI tương ứng để truy cập mã gốc tương tác với phần cứng âm thanh.
- JNI
- Mã JNI được liên kết với android.media gọi mã gốc cấp thấp hơn để truy cập phần cứng âm thanh. JNI nằm trong
frameworks/base/core/jni/
vàframeworks/base/media/jni
. - Khung bản địa
- Khuôn khổ gốc cung cấp một bản gốc tương đương với gói android.media , gọi proxy IPC của Binder để truy cập các dịch vụ dành riêng cho âm thanh của máy chủ phương tiện. Mã khuôn khổ gốc nằm trong
frameworks/av/media/libmedia
. - Binder IPC
- Các proxy IPC liên kết tạo điều kiện giao tiếp qua các ranh giới quy trình. Các proxy được đặt trong
frameworks/av/media/libmedia
và bắt đầu bằng chữ cái "I". - Máy chủ phương tiện
- Máy chủ phương tiện chứa các dịch vụ âm thanh, là mã thực tế tương tác với các triển khai HAL của bạn. Máy chủ media được đặt trong
frameworks/av/services/audioflinger
. - HAL
- HAL xác định giao diện tiêu chuẩn mà các dịch vụ âm thanh gọi vào và bạn phải triển khai để phần cứng âm thanh của mình hoạt động chính xác. Để biết thêm chi tiết, hãy tham khảo giao diện HAL âm thanh và nhận xét trong tệp
*.hal
của thư mục phiên bản HAL tương ứng. - Trình điều khiển nhân
- Trình điều khiển âm thanh tương tác với phần cứng của bạn và triển khai HAL. Bạn có thể sử dụng Kiến trúc âm thanh nâng cao của Linux (ALSA), Hệ thống âm thanh mở (OSS) hoặc trình điều khiển tùy chỉnh (HAL là trình điều khiển bất khả tri).
Lưu ý : Nếu bạn sử dụng ALSA, chúng tôi khuyên bạn nên dùng
external/tinyalsa
cho phần người dùng của trình điều khiển vì giấy phép tương thích của nó (thư viện chế độ người dùng tiêu chuẩn được cấp phép GPL). - Âm thanh gốc Android dựa trên Open SL ES (không hiển thị)
- API này được hiển thị như một phần của Android NDK và ở cùng cấp kiến trúc với android.media .