您的位置:首页 > 其它

MediaPlay和SoundPool

2015-08-30 14:21 288 查看
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 ;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: