当进行android开发或游戏开发时,常常会涉及背景音乐的播放,以及短音效的使用
1.当涉及到背景音乐等长音乐播放时通常使用MediaPlayer类进行播放操作
MediaPlayer类常用方法:
1.public static void MediaPlayer create(Context context,int resid)
context:上下文 resid:资源文件位置,常用于导入项目中的音频文件
使用静态create方法创建MediaPlayer对象:MediaPlayer mp=MediaPlayer.create(this,R.raw.XXX);
2.public void reset();
将MediaPlayer重置为初始化状态
3.public void setDataSource(String path)
path:文件的路劲或要播放的网络URL
设置要播放的数据源
4.public void prepare()
准备播放
5.public void start()
开始播放数据源所指定的媒体
6.public void stop()
停止播放
7.public void release()
释放与此MediaPlayer对象想关联的资源。通常在使用完MediaPlayer之后调用,解除资源占用
2.当需要使用到一些反复出现,且时长很短的音效时,最好使用SoundPool。它还可支持多种声音的播放,只需在开始时将这些音效加载进其中,之后按照音效id调用相应的音效播放即可
代码实现:
private SoundPool sp=new SoundPool(5,AudioManager.STREAM_SYSTEM,5);
sp.load(this,R.raw.XXX,1);
sp.play(1,1,1,0,0,1);
下面一行一行解读
1.private SoundPool sp=new SoundPool(5,AudioManager.STREAM_SYSTEM,5);
声明SoundPool对象,并实例化。三个参数依次表示:
(1)一个sp对象能够支持的音效文件数量,该参数决定了android为其开设多大的缓冲区
(2)标识为系统声音,除此之外还有AudioManager.STREAM_RING和AudioManager_STREAM_MUSIC等,系统会根据不同的标识为该音效设置不同的优先级和缓冲区
(3)该参数表示声音的品质,数值越大品质越高,消耗的系统资源越多
2.sp.load(this,R.raw.XXX,1);
(1)上下文参数
(2)音效文件ID(例:R.raw.XXX)
(3)该音效文件在sp中的优先级
3.sp.play(1,1,1,0,0,1)
(1)ID:id即为音效文件放入sp中的顺序
(2)控制左声道音量
(3)控制右声道音量
(4)优先级
(5)是否循环播放,0不循环,-1循环
(6)播放比率(播放速度)范围0.5-2,0.5速度减半播放,2两倍速播放,1正常播放