我在这里搜索了太多的堆栈溢出,但我找不到任何解决我的问题的办法。
我得到一个媒体播放器错误名为'MEDIA_ERROR_IO‘代码-1004。
我是来自服务器的音频流,一切都很好。准备好歌曲,然后在onPrepared()方法中开始。
现在,当有一个来电,电话开始响时,问题就来了,我通过从我的mediaPlayer.pause()类打电话来暂停这首歌。
当电话通话结束时,通过调用mediaPlayer.start()再次启动音频
音频启动,但2-3秒后,它停止了一个错误,即MediaPlayer错误(1,-1004)。
现在我该怎么办?
任何帮助都是值得赞赏的。
谢谢。
发布于 2017-04-29 07:26:48
音频启动,但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;如果由于某种原因,由于网络问题,媒体播放器无法连接到服务器,则会出现此类型的错误。在该实例中,可能是internet连接不良,也可能是由于某些与网络有关的原因,媒体播放器无法连接到服务器。媒体播放器还可以抛出其他一些类似的错误代码,比如超时或服务器死亡:
/** 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;
}
});https://stackoverflow.com/questions/41122021
复制相似问题