您的位置:首页 > 移动开发 > Android开发

Android多媒体--SoundPool

2016-05-16 23:53 483 查看
SoundPool是用来播放短促声音的对象,他最大支持存放20个短促的声音

具体使用的代码请参见下面的demo示例

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button button;
private SoundPool soundPool;
private Map<String,Integer> poolMap;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();

poolMap = new HashMap<String, Integer>();//容器
// 第一个参数为音频池最多支持装载多少个音频,就是音频池的大小,最大容量为不超过20
// 第二个参数指定声音的类型,在AudioManager类中以常量的形式定义,
// 一般指定为AudioManager.STREAM_MUSIC即可;
// 第三个参数为音频的质量,默认为0,这个参数为预留参数,现在没有实际意义,为扩展预留字段,一般传0即可
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
// 装载音频进音频池,并且把ID记录在Map中
poolMap.put("test", soundPool.load(this, R.raw.ce, 1));

soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {

@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
// 每次装载完成均会回调
// 当前装载完成ID为map的最大值,即为最后一次装载完成
if (sampleId == poolMap.size()) {
// 进入应用播放四次声音
//第一个参数是歌曲的ID,第二个和第三个参数是左右声道的音量,值为0f--1.0f
//第四一个参数是音频的质量,暂时没有什么意义,给0就可以
//第五个参数是循环的次数,0为播放一次,-1为循环播放,如给3就是播放4次
//第六个参数是播放的速率,值为0--2之间,1表示正常播放
MainActivity.this.soundPool.play(poolMap.get("test"), 1.0f, 1.0f, 0, 3,
1.0f);
}
}
});

}

private void init() {
button= (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
if (soundPool != null) {
soundPool.play(poolMap.get("test"), 1.0f, 1.0f, 0, -1, 1.0f);
}
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: