在一个按钮中播放和停止

时间:2012-10-05 09:33:33

标签: android android-mediaplayer

我是新手,我试图播放音频播放并仅停止1个按钮,但我现在遇到了麻烦。

如果我在播放音频时触摸按钮,它就不会停止,甚至再次播放音频并发出双重声音。

这是我的代码

public class ProjectisengActivity extends Activity{
    ImageButton mainkan;
    MediaPlayer mp;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test2);

        mainkan=(ImageButton)findViewById(R.id.imageButton1);
        mainkan.setOnClickListener(new OnClickListener(){
             @Override
            public void onClick(View v){

                go();
             }

            });

         public void go(){
    mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
    if(mp.isPlaying()){
        mp.stop();
        try {
            mp.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mp.seekTo(0);
}
    else {
    mp.start();

    }

我是为Android 3.0(HoneyComb)创建的

4 个答案:

答案 0 :(得分:2)

在go函数中尝试以下代码....

public void go() {
  if(mp == null) {
    mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
  }

  if(mp.isPlaying()){
    mp.stop();
    try {
        mp.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mp.seekTo(0);
  }
  else {
   mp.start();
  }
}

答案 1 :(得分:2)

很简单,您应该按照以下步骤来实现这一目标。

  1. 在test2.xml中创建两个名称start和stop的按钮。

  2. 在xml文件中设置停止按钮的android:visibility属性。

  3. 现在在你的活动中获取这两个按钮的id并编写代码               启动和停止媒体播放器。

  4. 设置可见性属性在开始点击时停止,并且可以看到停止按钮,               按住相反的方式停止点击。

答案 2 :(得分:1)

我认为你错了这句话:

 mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);

每次用户点击按钮时都会创建新实例,因此它永远不会播放并重新开始。将此行放入onCreate而不是go()

答案 3 :(得分:0)

试试这个,

public class MainActivity extends Activity {
    MediaPlayer mPlayer;
    int flag = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button mButton = (Button) findViewById(R.id.button1);

        mButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if (flag == 0) {
                    Log.v("Inside if", "Success" + "");
                    mPlayer = MediaPlayer.create(getApplicationContext(),
                            R.raw.sample);
                    mPlayer.start();
                    flag++;
                } else {
                    Log.v("Inside else", "Success" + "");
                    mPlayer.stop();
                    mPlayer.release();
                    flag = 0;
                }


            }

        });
    }



}