Android底层开发之Audio HAL Android Audio Overview
http://blog.csdn.net/kangear/article/details/44939429
Android底層開發之Audio HAL
在Android音頻底層調試-基于tinyalsa中以「拋開Android的天生復雜,回歸嵌入式Linux的本質」的方式介紹如何調試Linux內核中的音頻驅動。
這里向上再伸展一下進入HAL層,看是如何將tinyalsa封裝給Frameworks使用的。
基于4.2.2版本源碼進行討論。Android官方教程是Audio Implementing the HAL.
一個完整的Android音頻系統架構如圖所示:
?
Android Audio Overview
http://blog.csdn.net/tjy1985/article/details/9942637
音樂播放器是手機中重要的娛樂應用,我們在開發播放器有可能用到mediaplayer,或者AudioTrack來播放音頻文件,對應應用開發者來說,我們只要了解了暴露出來的API就可以了,但是光了解API還是不能全面的理解設計者的理念和思路,無法清楚音頻如何選擇什么的設備進行輸出。下面我們本著探討的目的來了解下audio的架構,完善我們對audio的了解。
首先看下整個audio的框架結構。
從上圖我們可以大概了解了audio的整個架構,各個部分分工明確,下面我們來具體看下他們的具體作用。
Java API?
Mediaplayer , Audiotrack, AudioService, AudioManager
Mediaplayer 和AudioTrack是我們播放音頻時供應用選擇的接口,這兩者有什么區別呢?mediaplayer運用比較廣泛了,它可以把未解碼的媒體文件進行解碼,然后交給設備去輸出,而AudioTrack的功能就比較單一了,它只能播放PCM流的文件(即解碼后的文件)。
AudioService監聽來自HDMI, FM等應用的intent,通知audiosystem,它其實也監控者音量,實現音量在UI上的同步。
AudioManger給上層提供了訪問音量的接口,并控制ringer? mode。
AudioSystem 相當于AudioManager 和AudioService的內部類,只供他倆調,設置phone的狀態。
User space C++
Multimedia framework – StageFright/AwesomePlayer
1)?????? player的選擇,媒體文件的解析
2)?????? 選擇解碼器,跟OpenMAX IL打交道,解碼
AudioFlinger
1)?????? 管理者整個audio的輸入輸出設備
2)?????? 把多個audiostream整合成一個PCM audio流,指向安排好的輸出設備去輸出
轉載于:https://www.cnblogs.com/pengxinglove/p/5469559.html
總結
以上是生活随笔為你收集整理的Android底层开发之Audio HAL Android Audio Overview的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华夏万家余额变成负数怎么回事 债权人摇身
- 下一篇: 申请信用卡多会不会不良记录 申请贷款可能