SoundPool只能播放短的音乐,常用来做游戏音效或铃声
SoundPool
使用:
1.将音乐文件拷贝到项目里
2.新建一个实例对象
3.使用load()方法,让SoundPool实例加载音效资源,该方法会返回一个整型的soundID
4.使用play()方法播放音效
实现思路:
1.创建对象:
SoundPool只有一个构造方法:
SoundPool(int maxStreams, int streamType, int srcQuality)
第一个参数 int maxStreams:指定支持多少个声音
第二个参数 int streamType:声音流的类型,一般用STREAM_MUSIC
第三个参数 int srcQuality:声音的品质
2.添加音频:
用load()方法来添加
public int load(Context context, int resId, int priority)
参数分别是:
Context context:最主要的功能是加载和访问资源。
int resId:想要加载的音效资源ID
int priority音效播放时的优先级
3.播放音频:
用play()方法来播放
play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
参数是:
int soundID: 第一个参数指定播放哪个声音
float leftVolume,float rightVolume:第二三个参数指定左右声道音量
int priority:第四个参数播放声音的优先级,值越大越优先播放,0最小
int loop, float rate第五个参数是否循环,其中负数表示无穷循环,非负数表示循环次数,比如0表示循环0次,也就是播放一次就不再循环了,总共就只播放一次;1则表示循环1次(总共播放2次)
float rate:音频播放速率(就是快进、快退啥的),取值0.5f - 2.0f,其中0.5表示播放速度为正常的0.5倍。1表示正常速率播放。
4.代码示例:
步骤:
1.首先在res文件下新建raw文件
2.然后把我们加载的音效放在raw文件下
3.然后就可以写代码
主要代码:
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
public class GameSoundPool {
private SoundPool soundPool;
private int s1;
private int s2;
public GameSoundPool(Context context){
this.soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC,0);
s1 = soundPool.load(context,R.raw.shoot,1); //第二个参数是播放的音频资源名,第三个参数是播放优先级
s2 = soundPool.load(context,R.raw.explosion3,1);
}
public void playSound(int s){
switch (s){
case 1:
/**
* 第一个参数是 音效对象,第二和第三个参数是左,右声道音量,第四个是优先级,第五个是是否循环,第六个是播放倍速
*/
soundPool.play(s1,1,1,1,0,2f);//
break;
case 2:
soundPool.play(s2,1,1,1,0,1f);
break;
}
}
}
最后将SoundPool的对象传到布局里面调用
最后,SoundPool的API:
http://www.android-doc.com/reference/android/media/SoundPool.html