概述
SoundPool是android原生接口 android.media
提供的一个API类,用来播放短暂急促的音频。
使用
public SoundPool(int maxStreams, int streamType, int srcQuality)
构造方法中的三个参数说明:
- 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:优先级(0=最低优先级)
- loop:播放次数(0:播放一次;-1:无限播放;2:播放3次)
- rate:播放速率,0.5~2,一般为1
- pause(int streamID):暂停播放
- resume(int streamID):恢复播放
- stop(int streamID):停止播放
简单使用
//支持的声音数量 声音类型 声音质量
soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 1);
//加载声音资源文件(R.raw.message:音频文件)
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
}
});
题外话:「亲爱的陌生人,记得好好生活,爱惜身体,注意休息。一年四季,一日三餐~ 」
今天我下班跑的特别快,有幸迎着落日(如上图⬆️)。