关于android audio路由策略的修改
在工作时,往往有这样一些需求:
1)希望针对不同的audio stream type(例如music、tts), 有输出到不同的输出设备(例如speaker、headset、BT、usb audio等)的需求,另外还有输出设备的优先级的需求。例如AUX(headset) > BT > FMTX > speaker。即例如BT连接了,那么音频就输出到BT,而不是FM发射。
2)针对不同的audio stream type和不同的输出设备,有不同的输出音量值。
3)针对不同的audio stream type、不同的输出设备、不同的应用的audio track,同时播放时,有不同的音量的需求。例如TTS、导航音、music声音同时输出时,TTS声音要提高,导航声音要中间,音乐声音要压低。
4)如果接上,一般HDMI输出是音频和视频同时输出到HDMI外设的,如何做到HDMI只输出视频到HDMI外设,例如显示屏,但音频留在本地speaker播放呢?
这些问题,其实修改起来,不同的android版本涉及到不同的函数。
Android KK:
AudioPolicyManagerBase.cpp
AudioPolicyManagerBase.cpp::getDeviceForStrategy() 决定音频路由策略。
MTK的 AudioMTKPolicyManager.cpp
Android L:
AudioPolicyManage