@XQF
2017-02-11T11:06:17.000000Z
字数 695
阅读 1341
《Android探险》
参考博文1
[参考博文2][2]
也就是说Android系统中主要有两种方式播放音频,但是这两种方式主要使用的条件不同
SoundPool主要是用于游戏,按键比较短促的声音。
MediaPlayer应该主要是用来长时间播放音乐,。应该大部分音乐播放器就是这样实现的。
在BeatBox应用中有一长串的声音Assets文件,决定用一个sound模型来描述,他们的区别就在于各自的ID,ID怎么来的尼。是大管家SoundPool给的,怎么来给每个sound模型给id尼。。?
首先我们要把要播放的原始资源预加载到SoundPool中,SoundPool有多个重载的load方法,。挑选简单的和合适的,BeatBox使用了用AssetFileDescriptor为参数的一种的load方法,牵扯到我们要先根据文件路径生成一个AssetFileDescriptor文件对象,再使用这个对象load。load方法的返回值是一个int。。然后我们就把相应的ID保存在响应的sound模型中。
好了,上面的步骤总结一下就是我们要通过asset文件的路径,把asset文件加载进SoundPool,获得一个int类型的ID。相当于买黄焖鸡的时候,先进入排队队列买票,。买了票人家做好了就直接叫号就行了。
所以最后一个要播放文件的时候,直接使用SoundPool的play方法,传入对应的id和其他参数。一切东西就解决了。