Android Audio代码分析26 - Audio Strategy

在看示例代码 testPlaybackHeadPositionIncrease 的时候,我们对 play 函数进行了研究。
不过,当时对 Android 中声音竞争策略相关的内容,并没有详细分析。
今天就以 AudioTrack 的播放为引子,来仔细看看 Anroid 中各种声音是以什么样的策略来竞争的。


从 Java 侧类 AudioTrack 的 play 函数到函数 AudioFlinger::PlaybackThread::Track::start 之间的调用关系就不再叙述了。
在看示例代码 testPlaybackHeadPositionIncrease 的时候已经说明过了。
今天就从函数 AudioFlinger::PlaybackThread::Track::start 开始分析。


*****************************************源码*************************************************

**********************************************************************************************
源码路径:
frameworks\base\services\AudioFlinger.cpp


#######################说明################################

###########################################################


&&&&&&&&&&&&&&&&&&&&&&&总结&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
各种声音控制策略的实现主要在 Audio Policy Manager 中。
其中会根据 stream type 和当前的状态对各种 stream 的音量作必要的修改。
以达成以下的优先级效果:


Priority  Strategy Type                           Stream Type
4            STRATEGY_PHONE               VOICE_CALL
                                                                   BLUETOOTH_SCO
3           STRATEGY_SONIFICATION    RING
                                                                   NOTIFICATION
                                                                   ALARM
                                                                   ENFORCED_AUDIBLE
2          STRATEGY_MEDIA                   SYSTEM
                                                                  TTS
                                                                   MUSIC
1         STRATEGY_DTMF                      DTMF


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
posted @ 2011-10-25 18:22  andriod2012  阅读(703)  评论(0编辑  收藏  举报