android - 处理 MediaPlayer 抛出无限错误的异常

标签 android android-mediaplayer

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

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

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

我已经试过了,

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

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

最佳答案

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

关于android - 处理 MediaPlayer 抛出无限错误的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776934/

相关文章:

android - 切换播放和暂停图像/音频 Android

android - 方向改变时应用程序崩溃

android - 使用服务在后台传输通话记录

java - 如何使用@ActivityInfo.ScreenOrientation

java - 从android中的另一个类调用mainactivity中的方法

android - Mediaplayer 被 AsyncTask 停止 - MediaPlayer 在没有被释放的情况下完成

android - 如何在 android 上使用 ffmpeg 创建播放器?

Android播放器继续回调,缓冲

安卓机房 : How to combine data from multiple SQL queries into one ViewModel

android - 具有异步建议的 AutocompleteTextView 不显示下拉列表