android使用SoundPool 播放短音效

 播放短音效

1,准备资源文件(短音效文件)

      在eclipse中,将准备好的声音文件放到res下的raw目录下(在res下新建一个文件名为raw的即可)

2,新建一个activity(包括两个Button),在activity中实现短音效的播放,如下:

   声明SoundPool

private SoundPool sp;       //得到一个声音池引用
private HashMap<Integer,Integer> spMap;   //得到一个map的引用

   onCreate(Bundle savedInstanceState) 中的代码:

initiSoundPool();
btn_shortmusic1 = (Button) findViewById(R.id.shortmusic1);
but_shortmusic2 = (Button) findViewById(R.id.shortmusic2);

btn_shortmusic1.setOnClickListener(this);
but_shortmusic2.setOnClickListener(this);

   initiSoundPool();

 public void initiSoundPool()
 {
  sp=new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
  spMap=new HashMap<Integer, Integer>();
  spMap.put(1, sp.load(this,R.raw.sound1,1));
  spMap.put(2, sp.load(this,R.raw.sound2,1));
 }

   palySounds():

 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         //回放速度 ,该值在0.5-2.0之间,1为正常速度
     );
    }

onClick(View arg0):

@Override
 public void onClick(View arg0) {
  // TODO Auto-generated method stub
  switch (arg0.getId()) {
  case R.id.shortmusic1:
   playSound(1,1);
   break;
  case R.id.shortmusic2:
   playSound(2,1);
   break;


你可能感兴趣的:(SoundPool,短音效播放)