Android java.io.IOException: Prepare failed.: status=0x1

最近使用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之后自动播放

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安卓平台和声音录制与播放相关的主要是4个类:MediaRecorder,MediaPlayer,SoundPool...
    闲庭阅读 10,657评论 1 47
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,751评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Media Playback Android多媒体框架包涵了对播放多种通用媒体的类型的支持,所以你可以很容易的集成...
    VegetableAD阅读 913评论 0 0
  • 分手之前,分手之后一直都在想你,可是我并没有去纠缠你,毕竟那已经没有了意义,你说已经对我没有感觉了,只是我还在一厢...
    深夜卡片阅读 796评论 0 0