连续播放端声音

Android SoundPool 的简单使用

北城余情 提交于 2020-03-24 07:43:41
3 月,跳不动了?>>> 之前只知道Android中可以用MediapLayer播放音乐,原来今天才发现 可以用SoundPool,用 SoundPool 可以播一些短的反应速度要求高的声音, 比如游戏中的爆破声,而 MediapLayer 适合播放长点的。 一般在玩游戏的时候,特别是在射击游戏中,经常会出现“突突突的射击”的声音,听起来好多声音连发的效果。其实实现起来是不难的,都知道,在Java中有线程池的概念,那么,类似的,在 Android 中,也存在 SoundPool 的概念。 备注:声音池默认申请1M的内存空间,所以不适合加载大文件。 SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。但是这里如果音效文件过大没有载入完成,我们调用play方法时可能产生严重的后果,这里Android SDK提供了一个SoundPool.OnLoadCompleteListener类来帮助我们了解媒体文件是否载入完成,我们重载 onLoadComplete(SoundPool soundPool, int sampleId, int status) 方法即可获得。 从上面的onLoadComplete方法可以看出该类有很多参数,比如类似id,是的SoundPool在load时可以处理多个媒体一次初始化并放入内存中,这里效率比MediaPlayer高了很多。