You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android MediaPlayer调用prepare()抛出IOException: Prepare failed.: status=0x1求助

解决方案

针对这个异常,结合你的代码和场景,可从以下几点排查修复:

  • 未绑定Prepared监听器
    你实现了onPrepared方法,但没有给mediaPlayerM设置监听器,导致MediaPlayer无法正确触发准备完成的回调,甚至引发流程异常。在setDataSource后添加:

    mediaPlayerM.setOnPreparedListener(this);
    
  • 同步prepare()不适合网络资源
    播放网络音频时,同步的prepare()容易阻塞线程、引发超时失败,应改用异步方法:

    // 替换掉原有的mediaPlayerM.prepare();
    mediaPlayerM.prepareAsync();
    
  • 检查URL与服务器响应
    确认目标URL能正常返回音频文件,部分服务器会拦截无合法User-Agent的请求,可自定义DataSource添加请求头(API 23+支持):

    Uri uri = Uri.parse(lnk);
    MediaDataSource dataSource = new HttpMediaDataSource(uri) {
        @Override
        protected void onPrepareConnection(HttpURLConnection connection) throws IOException {
            super.onPrepareConnection(connection);
            connection.setRequestProperty("User-Agent", "Android MediaPlayer");
        }
    };
    mediaPlayerM.setDataSource(dataSource);
    
  • Android版本的网络限制
    Android 9及以上默认禁止明文HTTP请求,需在AndroidManifest.xml的application标签中添加:

    android:usesCleartextTraffic="true"
    

    或者配置网络安全策略允许该域名的明文请求。

  • MediaPlayer状态管理
    确保mediaPlayerM初始化正确,建议在Service的onCreate中完成初始化:

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayerM = new MediaPlayer();
    }
    

内容的提问来源于stack exchange,提问作者nat34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:41:17