1

我是新手,我试图让播放音频播放并仅停止 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

4 回答 4

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();
  }
}
于 2012-10-05T09:44:59.370 回答
2

这很简单,您应该按照这些步骤来实现这一点。

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

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

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

  4. 设置在开始单击时消失的可见性属性和停止按钮的可见性,在停止单击时跟随其相反。

于 2012-10-05T09:52:31.393 回答
1

我认为你错了这一行:

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

每次用户单击按钮时,您都会创建新实例,因此它永远不会播放并重新开始。把这条线放到onCreate而不是go()

于 2012-10-05T09:36:29.247 回答
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;
                }


            }

        });
    }



}
于 2012-10-05T09:46:40.420 回答