Android

Android java.io.IOException: Pre

2016-10-20  本文已影响0人  dasamanren

最近使用MediaPlayer播放网络资源音频时,遇到一个问题,
就是在使用红米手机播放时,会提示播放错误,mediaPlayer.prepare();报了IO异常java.io.IOException: Prepare failed.: status=0x1,但是使用nexus 6p并没有出现,这也就表示只有部分的手机会出现这种问题。
报错源码为:

mediaPlayer.reset();
mediaPlayer.setDataSource(videoUrl);
mediaPlayer.prepare();// prepare之后自动播放

当我google之后得出的答案都是

File tempFile = new File(path);           
FileInputStream fis = new FileInputStream(tempFile);             
mediaPlayer.reset();             
mediaPlayer.setDataSource(fis.getFD());             
mediaPlayer.prepare();             
mediaPlayer.start();

其实这个方案只适合播放本地音频,并不能解决网络音频的问题。
后来我尝试了多种方案,发现了能播放的方法

mediaPlayer = MediaPlayer.create(context, Uri.parse(videoUrl));
mediaPlayer.start();

然后我想,是不是播放的方法不对,尝试了一下将prepare()替换成star(),然而并没有用,还是会报错。
再次对比,是不是设置videoUrl的方法有问题,不应该直接传Strring类型的,而应该转成Uri,一试之后,果然可行,所以最终解决MediaPlayer播放网络资源音频报java.io.IOException: Prepare failed.: status=0x1的方法为:

mediaPlayer.reset();
mediaPlayer.setDataSource(context, Uri.parse(videoUrl));
mediaPlayer.prepare();// prepare之后自动播放

希望对大家都有帮助,谢谢

上一篇下一篇

猜你喜欢

热点阅读