Android Audio遇到播放无声时的分析
在Android Audio开发过程中,有遇到播放ringtone时无声,但播放Music可以听到声音,关于无声问题的分析,在此做个笔记,方便以后回顾。
分析方向:
1:在音量控制面板中确认该音频流对应的Volume_index大小是否等于0;
2:若Volmue_index != 0时,看user space的logcat与kernel log中有无明显的Audio Fail项,比如设备是否选择正确以及对应的路径是否有配通;
3:在hardware层,在audio_hw.cpp文件中的out_write函数中添加log,判断是否有数据写入(QCOM MSM8939);
4:通过dumpsys media.audio_policy命令来查看对应音频流是否被mute住,若被mute,需要分析AudioPolicyManager.cpp文件;
5:看当前音源档本身的音量是否为0;
其中1与5之间的区别在于:在播放某音源档时,在AudioTrack::set()函数里,先将音源数据的左右声道的Volume设置为1.0,即为最大声。而通过音量按键或则在VolumePanel中调节音量则是在最大音量基础上做衰减操作。