媒体播放器开始停止启动

Sli*_* C. 12 android media-player

我正在制作一个新的Android声音应用程序.当我点击它时,我做了一个可点击的按钮来播放声音.但我也希望它在第二次点击时停止播放声音.那部分工作正常现在这是问题,当我再次点击按钮再次播放声音时,它不播放它,媒体播放器完全停止.我在论坛上看,但我似乎找不到可以帮助我的答案.这是我的活动:

  MediaPlayer mpButtonClick1;
MediaPlayer mpButtonClick2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.prvi);

    final MediaPlayer mpButtonClick1 = MediaPlayer.create(this, R.raw.spalshm);
    final MediaPlayer mpButtonClick2 = MediaPlayer.create(this, R.raw.splashs);


    Button dugme = (Button) findViewById(R.id.dugme);
    dugme.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mpButtonClick1.isPlaying()) {
                mpButtonClick1.stop();
                mpButtonClick1.reset();

            }
            else {              
                mpButtonClick1.start();

            }


        }   

    });
Run Code Online (Sandbox Code Playgroud)

当我尝试编写mpButtonClick1.prepare(); 我收到错误未处理的异常类型IOE异常

gia*_*200 11

尝试使用pause而不是stop.

原因:如果您暂停MediaPlayer,则可以稍后恢复.但是,如果您使用stop,几乎任何其他方法都不起作用,您将不得不再次准备MediaPlayer(或创建一个新的).

在此输入图像描述

更多信息:这里这里

PS:完成资源使用后别忘了释放内存.


Shy*_*dda 8

试试这个:你应该只使用一个媒体播放器对象

    public class PlayaudioActivity extends Activity {

    private MediaPlayer mp;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button b = (Button) findViewById(R.id.button1);
    Button b2 = (Button) findViewById(R.id.button2);
    final TextView t = (TextView) findViewById(R.id.textView1);

    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        stopPlaying();
        mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far);
        mp.start();
        }

    });

    b2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        stopPlaying();
        mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet);
        mp.start();
        }
    });
    }

    private void stopPlaying() {
        if (mp != null) {
            mp.stop();
            mp.release();
            mp = null;
       }
    }
}
Run Code Online (Sandbox Code Playgroud)


Bho*_*att 4

使用以下代码更改您的课程:

消除reset();

初始化好所有组件:

MediaPlayer mpButtonClick1;
MediaPlayer mpButtonClick2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.prvi);

     mpButtonClick1 = MediaPlayer.create(this, R.raw.spalshm);
     mpButtonClick2 = MediaPlayer.create(this, R.raw.splashs);


    Button dugme = (Button) findViewById(R.id.dugme);
    dugme.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mpButtonClick1.isPlaying()) {
                mpButtonClick1.stop();
             }
            else {              
                mpButtonClick1.start();
            }
         }   

    });
Run Code Online (Sandbox Code Playgroud)