在Android中播放相同的声音而不等待前一个结束

时间:2012-06-18 04:28:27

标签: android audio

大家好的情况是假设我单击一个按钮,声音播放并在该音轨的持续时间内再次单击该按钮并想从头开始播放。我尝试使用以下代码,但没有成功。 代码是:

public class SoundtestActivity extends Activity {
/** Called when the activity is first created. */
 MediaPlayer mp;
 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
     mp = MediaPlayer.create(this, R.raw.gun_shot);
    Button click=(Button) findViewById(R.id.bt1);
    click.setOnClickListener((new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(mp.isPlaying())
                mp.reset();
            mp.start();
        }
    }));
       }

}

3 个答案:

答案 0 :(得分:1)

试试此代码

mp.setOnCompletionListener(new OnCompletionListener(){

            @Override
            public void onCompletion(MediaPlayer mp) {
                mp.release();
                mp.start();
            }

        }); 

或者替换mp.start();通过mp.reset();在此代码中

答案 1 :(得分:1)

最好的方式和最简单的方法是= mp.setLooping(真); 是的,它确实有效,只需在mp.start()之后添加此行,并且需要nothinfg

答案 2 :(得分:0)

你需要在按钮的监听器方法中comment以下行和shift your Media player instance,与多个媒体播放器并行播放完成你的操作

Button click=(Button) findViewById(R.id.bt1);
click.setOnClickListener((new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    mp = MediaPlayer.create(this, R.raw.gun_shot); // ADD THIS LINE HERE

        if(mp.isPlaying()){ 
            mp.stop();           //ADDED TO STOP FIRST
            mp.release();        //ADDED TO RELEASE RESOURCES
    }
        mp.start();
    }
}));