【问题标题】:MediaPlayer Error (1, -1004)媒体播放器错误 (1, -1004)
【发布时间】:2017-04-29 15:26:48
【问题描述】:

我在这里搜索了太多关于堆栈溢出的内容,但我找不到任何解决问题的方法。

我收到名为“MEDIA_ERROR_IO”代码 -1004 的媒体播放器错误。

我正在从服务器流式传输音频,一切正常。歌曲准备好,然后在 onPrepared() 方法中开始。

现在问题来了,当有来电并且电话开始响铃时,我通过从我的 BroadcastReceiver 类调用 mediaPlayer.pause() 来暂停歌曲。

当电话通话结束时,通过调用 mediaPlayer.start() 再次启动音频

音频开始播放,但在 2-3 秒后停止并出现错误,即 MediaPlayer 错误 (1, -1004)。

现在我该怎么办?

任何帮助都是可观的。

谢谢。

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

    音频开始,但在 2-3 秒后停止并出现错误 MediaPlayer 错误 (1, -1004)。

    首先,让我们了解错误 (1, -1004) 的含义。 -1004 是 IO 错误的错误代码。以下参考来自 MediaPlayer.java 源代码。

    /** File or network related operation errors. */
    public static final int MEDIA_ERROR_IO = -1004;
    

    如果由于某种原因,媒体播放器由于网络问题而无法连接到服务器,则会出现此类错误。这可能是该实例的互联网连接不良或媒体播放器无法连接到服务器的某些网络相关原因。媒体播放器可能会抛出一些其他类似的错误代码,例如超时或服务器死机:

    /** Some operation takes too long to complete, usually more than 3-5 seconds. */
        public static final int MEDIA_ERROR_TIMED_OUT = -110;
    /** Media server died.*/
        public static final int MEDIA_ERROR_SERVER_DIED = 100;
    

    现在我该怎么办?

    要处理媒体播放器在运行时产生的错误,您应该实现错误侦听器。您可以随意处理错误,例如重启播放器。

    mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                @Override
                public boolean onError(MediaPlayer mp, int what, int extra) {
                    switch(extra){
                        case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
                            // Do Something
                            // eg. reset the media player and restart
                            break;
                        case MediaPlayer.MEDIA_ERROR_IO:
                            // Do Something
                            // eg. Show dialog to user indicating bad connectivity
                            // or attempt to restart the player
                            break;
                        case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
                            //Do Something
                            //eg. Show dialog that there was error in connecting to the server
                            // or attempt some retries
                            break;
                    }
                    //You must always return true if you want the error listener to work
                    return true;
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多