作者:恋你时间: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); }