MediaPlayer错误:在状态64中调用暂停

时间:2012-09-20 20:01:13

标签: android media-player

我在MediaPlayer中使用了Activity

当我点击后退按钮时,我收到此错误:

09-20 19:44:16.540: E/MediaPlayer(1822): pause called in state 64
09-20 19:44:16.540: E/MediaPlayer(1822): error (-38, 0)

代码

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        if (mp!= null && mp.isPlaying()) {
            mp.stop(); 
        }

        Intent intentstart = new Intent(X.this, Y.class);
        intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intentstart);
    }

    return super.onKeyDown(keyCode, event);
}

如果我使用mp.pause(),它的工作正常。为什么呢?

5 个答案:

答案 0 :(得分:12)

我使用了pause和seekto方法来重置播放器。

player.pause();
player.seekTo(0);

答案 1 :(得分:7)

暂停已停止的MediaPlayer是非法的,并且根据该错误消息听起来与您正在做的完全一样。

我建议更改您的onPause,使其不会尝试暂停已停止的MediaPlayer

也许: <击>

    if(mp!= null) {
       if(mp.isPlaying()) mp.pause();
    }

实际上不要这样做,我只是在文档中找到了这个:

  

请注意,从START状态到Paused状态的转换(反之亦然)在播放器引擎中异步发生。在调用isPlaying(),

之前更新状态可能需要一些时间

您应该在本地维护一个变量,以检查您是否已停止MediaPlayer,然后测试是否应该调用pause()

答案 2 :(得分:6)

我来这里寻找答案,虽然上面的回答在其他方面很有用,但它们并没有解决我的问题......

但是......我设法解决了这个问题:

变化 mediaPlayer.stop();

mediaPlayer.reset();

帮我摆脱了error( -38 , 0 )

再次感谢指出问题:)

答案 3 :(得分:1)

在停止播放媒体播放器后遇到问题, 我有一个例外,mp是一个能够重新开始, 然后用mp.stop()替换mp.reset()时 它运作得很好。

答案 4 :(得分:1)

即使我遇到了同样错误的类似问题。

我使用mplayer.pause()代替mplayer.stop()