MediaPlay和SoundPool

来源:互联网 发布:中国最新军装淘宝 编辑:程序博客网 时间:2024/06/01 09:12
MediaPlay和SoundPool
音频资源的播放
区别:
MediaPlayer可以播放时间较长,文件较大的音频资源;
SoundPool不支持较大的音频资源,支持多个短音效的同时播放。
1)MediaPlayer的使用
一般建议将MediaPlayer放在Service中来使用。
播放的声音资源:来自sd卡,网络,项目内部等。
声音文件在项目内部存放位置 res/raw/*.*
i. 初始化MediaPlayer
1) 使用静态方法create
player = MediaPlayer.create(context , R.raw.X) ;
player = MediaPlayer.create(context , uri) ;
特点:已经设置好了播放源,一般用于播放背景音乐;而且使用这种方式初始化的MediaPlayer对象可以直接调用start()方法播放音频。
2) 直接new
player = new MediaPlayer();
该方式初始化的MediaPlayer对象,需要通过setDataSource()设置播放源,而且还需要调用prepare()之后才能调用start()方法。
一首歌曲播放结束,播放下一首歌曲的时候
需要注意需要调用reset() ==> setDataSource() ==> prepare()
i。 new
ii。 设置播放源
reset() ==> setDataSource()  ==> prepare()
iii。播放/暂停
start()/pause() 
iv。 停止播放
stop()
v。 调整播放进度
seekTo()
ii. 其他相关方法
setLooping()
isPlaying()
iii. 监听器
OnCompletionListener
iv. MediaPlayer 资源释放
protected void onDestroy() {
super.onDestroy();
// 释放MediaPlayer所占用的资源
if(null != player) {
if(player.isPlaying()) {
player.stop() ;
}
player.release() ;
player = null ;
}
}

2)SoundPool
i. 初始化
soundPool = new SoundPool(max , AudioManager.STREAM_MUSIC , 0) ;
ii. 载入音频资源
int soundId = soundPool.load(context , R.raw.X , 1) ;
。。。
iii. 播放音频
soundPool.play(soundId , 1 , 1 , 0 , 0 , 1) ;
iv. 释放资源
if(null != soundPool) {
soundPool.release() ;
soundPool = null ;
}
0 0
原创粉丝点击