15

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(),它工作正常。为什么?

4

5 回答 5

18

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

player.pause();
player.seekTo(0);
于 2014-04-22T18:54:13.980 回答
7

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

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

也许:

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

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

请注意,从 Started 状态到 Paused 状态的转换(反之亦然)在播放器引擎中异步发生。在对 isPlaying() 的调用中更新状态可能需要一些时间,

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

于 2012-09-20T20:10:01.120 回答
7

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

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

改变 mediaPlayer.stop();

mediaPlayer.reset();

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

再次感谢您指出问题:)

于 2014-02-23T11:42:22.877 回答
2

在停止媒体播放器后遇到启动问题后,我遇到了一个异常并且 mp 能够再次启动,然后用它替换mp.stop()mp.reset() 时效果很好。

于 2015-08-13T14:04:01.480 回答
1

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

我用mplayer.pause()而不是mplayer.stop()

于 2016-06-22T04:13:00.657 回答