MediaPayler适合比较长且对时间要求不高的情况
player = MediaPlayer.create(this, R.raw.music);
if (player.isPlaying()) {
player.seekTo(0);
}else{
player.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
player.release();
}
SoundPool适合短促且对反应速度比较高的情况(游戏音效或按键声等),可以同时播放多个音效
/*实例化对象,参数:同时播放的流的最大数量,即同时播放的音乐数的上限;
流的类型,一般都是使用AudioManager.STREAM_MUSIC表示可以重复播放
采样率转化质量,但是现在该功能还不能生效,建议用0
*/
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
//参数三没有效果,建议用1
loadId = soundPool.load(ShakeActivity.this, R.raw.three, 1);
player = MediaPlayer.create(this, R.raw.music);
/*
1f:左声道音量
1f:右声道音量
1:音频的优先级,值越大优先级越高,
0:循环播放的次数,0为播放一次,-1为无限循环,其他值为loop+1次数
1f:播放速率,范围0.5-2.0(1为正常速率)
*/
soundPool.play(loadId, 1f, 1f, 1, 0, 1f);