1.实现音效笔记

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


 
 
 
 
 

你可能感兴趣的:(1.实现音效笔记)