处理MediaPlayer异常抛出无限错误

时间:2015-06-11 09:34:52

标签: android android-mediaplayer

我已经为MediaPlayer实施了一项服务,这样即使在最小化应用后我也可以继续播放。问题是每当MediaPlayer无法播放歌曲时(例如,文件不存在或MediaPlayer源路径错误)它会抛出一个常见错误,

Error (-38,0) start called in state 0

这个一直在无限循环中运行,因为它在后台服务中,所以很难防止这种情况发生。在这种情况下,我想强制关闭MediaPlayer并等到MediaPlayer开始播放另一首歌曲。

我已经尝试了,

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

但是这并没有阻止MediaPlayer在获得异常后抛出错误。我想知道防止此类异常的最佳做法是什么。任何形式的帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用MediaPlayer上的onErrorListener来处理错误,例如

mp.setOnErrorListener(new OnErrorListener() {

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // handle your error here like exit media player or show message
         or move to next song

        return true;
    }
});

此处主要是return true,如果您return false,则您将无法处理错误。