在Android L(最新的开发者预览版-Nexus 5)中,SoundPool.load()方法似乎出现了退化,加载一个小于100kb的样本需要超过5秒的时间,而在之前的版本中使用完全相同的代码可以立即加载样本。我尝试使用OGG或MP3格式均有相同的结果。尝试了不同大小但都小于100kb的文件,似乎40kb或80kb没有任何区别,无论是使用OGG还是MP3格式,加载始终会有约5秒的延迟。这似乎是在4.3版本之后又出现了SoundPool的另一个退化。可以轻松地复制该问题。
pool = new SoundPool(6, AudioManager.STREAM_MUSIC, 0);
// use a listener to start playback after load
pool.setOnLoadCompleteListener(listener);
// R.raw.sound1 is either an OGG or MP3 sample under 100kb od size
int id = pool.load(context, R.raw.sound1, 1);
// onLoadComplete() method of the listener is called several seconds after the call to laod()
使用在API 21引入的Builders API构建SoundPool时,同样会发生以下情况:
AudioAttributes attr = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build();
pool = new SoundPool.Builder().setAudioAttributes(attr).setMaxStreams(6).build();
还有人遇到这个问题吗?有人找到了解决办法吗?
非常感谢!