0

伙计们的情况是,假设我单击一个按钮,声音播放,并且在该曲目的持续时间内,我再次单击该按钮并希望从头开始播放。我尝试使用以下代码,但没有成功。代码是:

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();
        }
    }));
       }

}

4

3 回答 3

1

最好的方法和最简单的方法是 = mp.setLooping(true); 是的,它确实有效,只需在 mp.start() 之后添加这一行,不需要其他任何内容

于 2012-12-05T07:52:57.993 回答
1

试试这个代码

mp.setOnCompletionListener(新 OnCompletionListener() {

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

        }); 

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

于 2012-12-05T07:11:30.360 回答
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();
    }
}));
于 2012-06-18T04:45:28.060 回答