Как воспроизвести аудиопоток (НЕ ФАЙЛ) в приложении Android с URL - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь воспроизвести аудио из этого потока (обратите внимание, что это НЕ ФАЙЛ) https://listen.radioaktywne.pl:8443/ramp3, к сожалению, безуспешно.При копировании этой ссылки в мой веб-браузер она обычно воспроизводит онлайн-радио.

Я пробовал связываться с setAudioStreamType() и AudioAttributes, но, похоже, ничего из вышеперечисленного не работает.Кроме того, когда я пытаюсь URL-адрес простого mp3-файла, все работает нормально.Любые предложения?

Это весь файл MainActivity.java, ключевая часть которого, на мой взгляд, просто initializeMediaPlayer().

import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    // The audio url to play
    String audioUrl = "https://listen.radioaktywne.pl:8443/ramp3";
    private FloatingActionButton fab;
    private boolean playing=false;
    private MediaPlayer mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        initializeMediaPlayer();

        fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, R.string.now_listening, Snackbar.LENGTH_LONG).show();
                if (!playing) {
                    startPlaying();
                } else {
                    stopPlaying();
                }
            }
        });

    }
    private void stopPlaying() {
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
            mediaPlayer.release();
            initializeMediaPlayer();
            playing=false;
        }

    }
    private void startPlaying() {
        mediaPlayer.prepareAsync();
        playing =true;

        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                mediaPlayer.start();
            }
        });

    }
/**
* Take a look here!
*/
    private void initializeMediaPlayer() {
          mediaPlayer = new MediaPlayer();
//        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//        AudioAttributes audioAttributes = new AudioAttributes.Builder()
//                .setUsage(AudioAttributes.USAGE_MEDIA)
//                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
//                .build();
//
//        mediaPlayer.setAudioAttributes(audioAttributes);
        try {
            mediaPlayer.setDataSource(audioUrl);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
...