首页 > 解决方案 > Android Mediaplayer 无法正常播放直播

问题描述

我正在尝试在收到通知时通过我的应用程序中的媒体播放器播放直播 .ogg 音频。我的设备有奥利奥。问题是,当我收到通知时,在尝试播放音频时,我收到以下异常:

D/MediaPlayer: setDataSource IOException | SecurityException happend : 
java.io.FileNotFoundException: No content provider: http://10.15.17.27:8000/40bccd94-9388-4e62-f2e4-08d65393ff81
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1402)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1253)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1176)
    at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1163)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1135)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1080)
    at android.media.MediaPlayer.create(MediaPlayer.java:972)
    at android.media.MediaPlayer.create(MediaPlayer.java:949)
    at android.media.MediaPlayer.create(MediaPlayer.java:928)

直播结束后,mediaplayer 开始播放完成的直播。请在下面找到我的代码:

  try {
            //  MediaPlayer player = MediaPlayer.create(this, Uri.parse(remoteMessage.getData().get("body")));
            MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://10.15.17.27:8000/" + str_channel));
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
            player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        } catch (Exception e) {
            Log.e("mediaplayerexc", e.getMessage());
        }

标签: androidandroid-mediaplayerandroid-8.0-oreo

解决方案


你不能使用纯文本HTTP,除非提供一个网络安全配置,它会覆盖默认的网络安全配置,它变成了cleartextTrafficPermitted="false". 例如(仅base-config适用,除非有可用的本地 DNS)。当您的 DSL 路由器提供域时,您可以使用domain-config并更具体地说明它:

<?xml version="1.0" encoding="utf-8"?>
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <certificates src="system" />
    </trust-anchors>
</base-config>

这个问题也似乎是相关的——尽管 Android Pie 仍然需要安全配置。


推荐阅读