【问题标题】:Handle MediaPlayer exceptions from throwing infinite errors处理引发无限错误的 MediaPlayer 异常
【发布时间】:2015-06-11 17:53:40
【问题描述】:

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

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

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

我已经试过了,

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

但这并不能阻止 MediaPlayer 在收到异常后抛出错误。我想知道防止这种异常的最佳做法是什么。任何形式的帮助将不胜感激。

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

    您可以在 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那么错误不会由你处理。

    【讨论】:

    • 我会接受这个答案。从 OnErrorListener() 返回“true”就可以了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2013-01-29
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多