这几天公司需要开发android 7.1的平台,需要移植一些旧有平台的软件。
其中有一个测试软件中的声音测试,主要逻辑就是用MediaPlayer播放一小段音频以判断声音输出系统是否正常。
公司的测试人员就反映了声音测试在新平台上要么没声音要么只有“噔”一声
给软件加了一些打印,在申请音频焦点的时候记录时间,在音频播放结束回调CompletionListener的时候打印中间花费的时间。
然后发现原长3秒的wav音频test_sound只播了150ms左右。。。。。。
mPlayer.setDataSource(
this,
Uri.parse("android.resource://" + this.getPackageName() + "/"
+ R.raw.test_sound));
在demo中setDataSource是设的raw下的资源文件
然后我将setDataSource改成给文件的路径(歌曲复制到了内部存储中)
mPlayer.setDataSource("/storage/emulated/0/test_sound.wav");
test_sound就能完整的播放出来
接着我换了一个时长9秒的WAV音频test_sound2放到raw下也能播出来。
但是我将test_sound2用格式工厂剪切成只有3秒的时候,就出现了和test_sound同样的情况,只播了150ms左右。。
4秒和5秒都是如此
当我剪切成一个6秒的WAV音频时,终于能完整播放了。
后来我怀疑跟格式有关,便将WAV格式的test_sound转成MP3格式,还是只播了150ms左右。
一个奇怪的现象,以此记录。
往后能出真相
2018029更新--------------------------------------
在设置提示音中也有这个现象,导致在调节音量时会播放不完整的音频。