http://blog.csdn.net/adits/article/details/8242146
開發環境簡介
1. 主機系統: Unbuntu10.102. android系統版本: 4.0.3(Linux kernel 3.0.8)
綜述
android的音頻系統非常龐大復雜:涉及到java應用程序,java框架層,JNI,本地服務(AudioFlinger和AudioPolicyService),硬件抽象層HAL,ALSA-LIB和ALSA-DRIVER。本文將先分析音頻系統的啟動與模塊加載流程,並具體分析一個JAVA API的調用流程;最后在此基礎上自然地為android系統添加USB AUDIO設備的放音和錄音功能。
全文可分為如下幾大部分:
1. 本地服務的啟動流程分析。
1.1 AudioFlinger啟動流程及其所涉及的HAL層模塊啟動流程分析。
1.2 AudioPolicyService啟動流程及其所涉及的HAL層模塊啟動流程分析。
2. JAVA API setDeviceConnectionState()調用流程詳解,同時為android系統添加USB AUDIO設備的放音和錄音功能。
3. ALSA-LIB淺述以及asound.conf配置文件的書寫。
4. 重新獲取USB AUDIO設備的硬件參數。