最近使用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之后自动播放
希望对大家都有帮助,谢谢