作者:恋你
时间:2012.1.12
package com.shiqiu.yinxiao;
/*
播放小于7秒的音效
1. sp=new SoundPool()对象
a.构造方法:public SoundPool(int maxStreams,int streamType,int srcQuality)//SoundPool(同时播放音效数量,音频类型(游戏中通常STREAM_MUSIC)音频质量(通常0))
b.加载资源:public int load(Context context,int resID,int priority)
//解释下:lodd(上下文(Activity),资源文件ID(R.raw.attack02),优先级(设置为1,方便后期使用)
在这里需要配合着spMap=new HashMap<Integer,Integer>();
spMap.put(1,sp.load(this,R.raw.attack02,1))//加载得到资源,键值为1
spMap.get(1)//需要播放的资源
c.播放资源:sp.play(soundID, leftVolume, rightVolume, priority, loop, rate)
sp.play(spMap.get(1),volumnRatio,volumnRatio,1,1)
sp.play(资源ID,左声道音量,右声道音量,优先级0为最低,循环次数)//0无不循环,-1无永远循环
*/
public class yinxiaoActivity extends Activity {
/** Called when the activity is first created. */
SoundPool sp;
Button y1;
Button pause1;
HashMap<Integer,Integer> spMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initSoundPool();//初始化音量池
y1=(Button)findViewById(R.id.y1);//得到控件引用句柄
pause1=(Button)findViewById(R.id.yp1);//得到控件引用句柄
y1.setOnClickListener(new View.OnClickListener() {//控件绑定监听器
@Override
public void onClick(View v) {
playSound(1,1); //播放第一首音效,循环一遍
Toast.makeText(yinxiaoActivity.this, "播放音效1", Toast.LENGTH_SHORT).show();//吐司信息提示
}});
pause1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sp.pause(spMap.get(1));
Toast.makeText(yinxiaoActivity.this, "暂停音效1", Toast.LENGTH_SHORT).show();
}});
}
public void initSoundPool(){
sp = new SoundPool(5,AudioManager.STREAM_MUSIC,0);
spMap=new HashMap<Integer,Integer>();
spMap.put(1,sp.load(this,R.raw.attack02,1));//加载音效资源1 spMap.put()方法配合spMap.get() 加载资源,使用得到的那个资源
spMap.put(2,sp.load(this,R.raw.attack14,1));//加载音效资源2
}
public void playSound(int sound,int number){ //播放声音,参数sound是播放音效的id,参数number是播放音效的次数
AudioManager am=(AudioManager)this.getSystemService(this.AUDIO_SERVICE);//实例化AudioManager对象
float audioMaxVolumn=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //返回当前AudioManager对象的最大音量值
float audioCurrentVolumn=am.getStreamVolume(AudioManager.STREAM_MUSIC);//返回当前AudioManager对象的音量值
float volumnRatio=audioCurrentVolumn/audioMaxVolumn;
sp.play(
spMap.get(sound), //播放的音乐id
volumnRatio, //左声道音量
volumnRatio, //右声道音量
1, //优先级,0为最低
number, //循环次数,0无不循环,-1无永远循环
1);
}