概述
SoundPool是android提供的一个API类,用来播放短暂的音频。
使用
构造方法中的三个参数
- maxStreams: 同时播放流的最大数量,当播放的流的数目大于此值,则会选择性停止优先级较低的流
- streamType :流类型,比如 STREAM_MUSIC
- srcQuality :采样率转换器质量,目前没有什么作用,默认填充0
方法
soundPool的方法:
- load():加载音频文件(四种加载方式)
- int load(AssetFileDescriptor afd, int priority) 通过一个AssetFileDescriptor对象
- int load(Context context, int resId, int priority) 通过一个资源ID
- int load(String path, int priority) 通过指定的路径加载
- int load(FileDescriptor fd, long offset, long length, int priority) 通过FileDescriptor加载
加载资源可能需要时间,一般使用:
soundPool.setOnLoadCompleteListener()//资源加载监听
- play():播放音频
方法参数:- leftVolume:左声道
- rightVolume:右声道(0.0 到 1.0)
- pripority:优先级
- loop(0:播放一次;-1:无限播放)
- rate:播放速率,0.5~2,一般为1
- pause(int streamID):暂停播放
- resume(int streamID):恢复播放
- stop(int streamID):停止播放
简单使用
//支持的声音数量 声音类型 声音质量
soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 1);
final int id = soundPool.load(MainActivity.this, R.raw.message, 1);
//音频加载完成监听
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int i, int i2) {
Log.d("test", "加载完成");
//播放
soundPool.play(id, //声音id
1, //左声道
1, //右声道
1, //优先级
-1, // 0表示不循环,-1表示循环播放
1);//播放比率,0.5~2,一般为1
}
});