Mediaplayer停止不起作用

时间:2011-05-15 22:21:43

标签: android

我有一个MediaPlayer对象作为类属性。

    MediaPlayer mp;

然后我在onCreate方法中使用它们 -

        mp = MediaPlayer.create(getApplicationContext(), R.raw.num1);
    mp.start();

然后我尝试从我的一个按钮clicklistener中阻止它 -

        btnBack = (Button) findViewById(R.id.btn1);     
    btnBack.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            stopSound();
            startActivity(new Intent(Five.this, Four.class));
            finish();

        }
    });
}

public void stopSound(){
    if (mp != null) {
        mp.release();
        mp.stop(); 
    }
}

但停止不起作用。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您已经发布了MediaPlayer实例。它已经消失了。释放后,您无法在其上调用stop()。如果您打算恢复声音,只需删除release()调用即可。如果要销毁MediaPlayer(例如,稍后使用MediaPlayer.create()创建一个新的),请删除stop()调用。你应该仔细阅读this documentation; MediaPlayer类非常复杂。您需要了解不同的状态,何时可以,不能调用某些方法。

答案 1 :(得分:2)

在某些Android版本中,只有一些版本,我在一个应用程序流媒体广播中遇到类似的问题,它可以用它:

    try{
        if(mp!=null && mp.isPlaying()){
            mp.stop();
        }
        mp.release();
        mp=null;
        mp = new MediaPlayer();  //I needed this, maybe you dont hac
    }catch(Exception e){
                    e.printStackTrace();
        System.out.println("I can't believe you get here !");
    }

答案 2 :(得分:0)

你不能在停止之前调用释放

查看此处的生命周期http://developer.android.com/reference/android/media/MediaPlayer.html