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

Android MediaPlayer无法通过URL播放流:网页可播放手机加载失败

Android流媒体加载失败问题

网页端可正常播放该流媒体链接,但手机端始终无法加载,相关配置与代码如下:

权限配置

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

实现代码

String url = "http://n13.radiojar.com/5705c71sn2zuv?rj-ttl=5&rj-tok=AAABhPz0EysAQfb4iRmp2q_BTQ";    

mediaPlayer = new MediaPlayer();
// mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build());
mediaPlayer.setDataSource(url);
// prepare async to not block main thread
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(player -> {
     player.start();
    });

排查与解决建议

  • 适配Android明文网络限制:你的链接使用HTTP协议,Android 9(API 28)及以上默认禁止明文HTTP请求,需在AndroidManifest.xml的application标签中添加配置:

    <application
        ...
        android:usesCleartextTraffic="true">
    
  • 添加错误监听定位问题:当前代码缺少错误回调,无法明确失败原因,建议补充监听逻辑:

    mediaPlayer.setOnErrorListener((player, what, extra) -> {
        Log.e("MediaPlayerErr", "错误码:" + what + ",额外信息:" + extra);
        return false;
    });
    
    mediaPlayer.setOnInfoListener((player, what, extra) -> {
        Log.i("MediaPlayerInfo", "信息码:" + what + ",额外信息:" + extra);
        return false;
    });
    

    通过日志可以快速判断是网络异常、格式不兼容还是其他问题。

  • 替换为ExoPlayer增强兼容性:原生MediaPlayer对部分流媒体格式/协议支持有限,改用ExoPlayer能更好适配各类流媒体资源,解决多数加载失败问题。

  • 检查手机网络环境:确认手机未开启代理、VPN,且网络连接正常,避免因网络链路问题导致无法访问流媒体地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:01:03