0

我的项目中有一个按钮。我想在单击按钮时>>>>开始声音,当再次单击按钮时>>>停止声音...我使用此代码但无法停止声音并一次又一次地开始...我该怎么做这个?谢谢你。

Button  btritm1 =  (Button) findViewById(R.id.button9991);
btritm1.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        final MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.ritm1);
        if (event.getAction() == MotionEvent.ACTION_DOWN  ) 
        {
            if(mp1_1 != null && mp1_1.isPlaying() ) 
            {
                mp1_1.stop();
            }        
            else {      
                //  xritm1 = 1;
                //  snd.stop_s_ritm1(); 
                mp1_1.setLooping(true);
                mp1_1.start(); 
            }
        }  // end of if
        return false;
    }
});  // end of ontouch listener/* 
4

2 回答 2

1
if(sound.isPlaying()){
sound.stop();
}else{
sound.reset();
sound.setDataSource(yourURL);//or InputStream etc.
    sound.prepare();
sound.start();
}
于 2013-01-10T11:12:08.350 回答
1

要使用良好的做法,请将 MediaPlayer 对象声明为类变量并在 onCreate() 方法中对其进行初始化。您的问题是每次触摸您的控件时都会创建一个新的播放器对象。正如上面已经说过的,这条线

  final MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.ritm1);

应该在侦听器之外。

于 2013-01-10T11:22:55.577 回答