Android Mediaplayer не воспроизводит трансляцию должным образом - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь воспроизвести аудио в формате .ogg через медиаплеер в моем приложении при получении уведомления.На моем устройстве установлен Oreo. Проблема заключается в том, что когда я получаю уведомление при попытке воспроизвести звук, я получаю следующее исключение:

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)

По окончании прямой трансляции медиаплеер начинает воспроизводитьзакончил живой эфир.Пожалуйста, найдите мой код ниже:

  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());
        }

1 Ответ

0 голосов
/ 27 ноября 2018

Вы не можете использовать обычный текст 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, тем не менее, нуждается в настройке безопасности.

...