Android一次播放1个声音

问题描述:

再次问这个问题的道歉。我以为我发现我后来的信息,但公共无效停止()似乎并没有工作。我正在使用Soundpool和SoundManger。我只需要一个声音就可以在任何时候播放。一旦按下另一个按钮,我希望所有以前的声音停止,并播放最近按下的按钮。Android一次播放1个声音

这里是我的SoundManger:

package com.androidbook.ufgsoundboard; 

import java.util.HashMap; 

import android.content.Context; 
import android.media.AudioManager; 
import android.media.SoundPool; 



public class SoundManager { 

    private SoundPool mSoundPool; 
    private HashMap<Integer, Integer> mSoundPoolMap; 
    private AudioManager mAudioManager; 
    private Context mContext; 
    public static final int maxSounds = 1; 

    public SoundManager() 
    { 

    } 

    public void initSounds(Context theContext) { 
     mContext = theContext; 
     mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); 
     mSoundPoolMap = new HashMap<Integer, Integer>(); 
     mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);   
    } 

    public void addSound(int Index,int SoundID) 
    { 
     mSoundPoolMap.put(Index, mSoundPool.load(mContext, SoundID, 1)); 

    } 

    public void playSound(int index) { 

     int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
     mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f); 
    } 


} 

这里是我的音板:

package com.androidbook.ufgsoundboard; 

import com.androidbook.ufgsoundboard.SoundManager; 


import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class Soundboard extends Activity { 
    private SoundManager mSoundManager; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.petera); 

     mSoundManager = new SoundManager(); 
     mSoundManager.initSounds(getBaseContext()); 
     mSoundManager.addSound(1, R.raw.sound1); 
     mSoundManager.addSound(2, R.raw.sound2); 
     mSoundManager.addSound(3, R.raw.sound3); 
     mSoundManager.addSound(4, R.raw.sound4); 
     mSoundManager.addSound(5, R.raw.sound5); 
     mSoundManager.addSound(6, R.raw.sound6); 
     mSoundManager.addSound(7, R.raw.sound7); 
     mSoundManager.addSound(8, R.raw.sound8); 
     mSoundManager.addSound(9, R.raw.sound9); 
     mSoundManager.addSound(10, R.raw.sound10); 
     mSoundManager.addSound(11, R.raw.sound11); 
     mSoundManager.addSound(12, R.raw.sound12); 
     mSoundManager.addSound(13, R.raw.sound13); 
     mSoundManager.addSound(14, R.raw.sound14); 
     mSoundManager.addSound(15, R.raw.sound15); 
     mSoundManager.addSound(16, R.raw.sound16); 
     mSoundManager.addSound(17, R.raw.sound17); 
     mSoundManager.addSound(18, R.raw.sound18); 




     Button SoundButton1 = (Button)findViewById(R.id.button3); 
     SoundButton1.setOnClickListener(new OnClickListener() { 


    public void onClick(View v) { 
      mSoundManager.playSound(1); 

    } 
});  
     Button SoundButton2 = (Button)findViewById(R.id.button4); 
     SoundButton2.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(2); 

    } 
});  
     Button SoundButton3 = (Button)findViewById(R.id.button5); 
     SoundButton3.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(3); 

    } 
});  
     Button SoundButton4 = (Button)findViewById(R.id.button6); 
     SoundButton4.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(4); 

    } 
});  
     Button SoundButton5 = (Button)findViewById(R.id.button7); 
     SoundButton5.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(5); 

    } 
}); 
     Button SoundButton6 = (Button)findViewById(R.id.button8); 
     SoundButton6.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(6); 

    } 
});  
     Button SoundButton7 = (Button)findViewById(R.id.button9); 
     SoundButton7.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(7); 

    } 
}); 
    Button SoundButton8 = (Button)findViewById(R.id.button10); 
     SoundButton8.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(8); 

    } 
});  
     Button SoundButton9 = (Button)findViewById(R.id.button11); 
     SoundButton9.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(9); 

    } 
});  
     Button SoundButton10 = (Button)findViewById(R.id.button12); 
     SoundButton10.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(10); 

    } 
});  
     Button SoundButton11 = (Button)findViewById(R.id.button13); 
     SoundButton11.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(11); 

    } 
});  
     Button SoundButton12 = (Button)findViewById(R.id.button14); 
     SoundButton12.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(12); 

    } 
});  
     Button SoundButton13 = (Button)findViewById(R.id.button15); 
     SoundButton13.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(13); 

    } 
});  
     Button SoundButton14 = (Button)findViewById(R.id.button16); 
     SoundButton14.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     mSoundManager.playSound(14); 

    } 
});  

     Button SoundButton15 = (Button)findViewById(R.id.button17); 
       SoundButton15.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       mSoundManager.playSound(15); 

      } 
     }); 
       Button SoundButton16 = (Button)findViewById(R.id.button18); 
       SoundButton16.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       mSoundManager.playSound(16); 

      } 
     });  
       Button SoundButton17 = (Button)findViewById(R.id.button19); 
       SoundButton17.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       mSoundManager.playSound(17); 

      } 
     });  
       Button SoundButton18 = (Button)findViewById(R.id.button20); 
       SoundButton18.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       mSoundManager.playSound(18); 

      } 

       }); 
       Button back = (Button) findViewById(R.id.button1); 
       back.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 
         // fire intent 
         finish(); // finish current activity 
         Intent myIntent = new Intent(view.getContext(), 
           UFGcharactersActivity.class); 
         startActivityForResult(myIntent, 0); 

        } 


       }); 





     Button next = (Button) findViewById(R.id.button2); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       // fire intent 
       finish(); // finish current activity 
       Intent myIntent = new Intent(view.getContext(), 
         Soundboardb.class); 
       startActivityForResult(myIntent, 0); 

      } 


     });} 

     };  

我希望它的一个简单变化,我只是不能似乎找到或锻炼身体。

谢谢大家的期待。

Paul

+0

来到后的尝试所有天我终于找到了答案!我目前有代码显示:mSoundPool = new mSoundPool = new SoundPool(4,AudioManager.STREAM_MUSIC,0);我已将其更改为mSoundPool = new SoundPool(1,AudioManager.STREAM_MUSIC,0);现在它只播放1个声音! – PaulH

SoundManagerinitSounds()方法,改变4到1:

mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); 

我碰到了同样的问题,一旦:)

好运

+0

谢谢!最后现在工作大声笑。 – PaulH

对于简单的应用程序,我使用这个静态声音类。

public class Sound 
{ 
private static MediaPlayer mp = null; 

/** Stop old sound and start new one */ 
public static void play(Context context, int resource) 
{ 
    stop(context); 

    mp = MediaPlayer.create(context, resource); 
    mp.setLooping(false); 
    mp.start(); 
} 

/** Stop the music */ 
public static void stop(Context context) 
{ 
    if (mp != null) 
    { 
     mp.stop(); 
     mp.release(); 
     mp = null; 
    } 
} 
} 
+0

谢谢。只是为了测试目的需要一些哔声。你的小班帮助了我很多,只是放下它,毫无麻烦地工作,所以我可以专注于我的实际工作。不胜感激! – Ridcully