Как играть в онлайн-радио в android

Я работаю над андроидным приложением, в котором я играю в онлайн-потоковое радио.  Я прошел через классы медиаплеера, но я не думаю, что есть какой-либо метод онлайн-потоковой передачи радио. Если кто-нибудь знает об этом, пожалуйста, помогите мне.

Спасибо. Викрам

Ответы

Ответ 1

Викрам,

Вы сможете добиться этого, используя MediaPlayer; однако, в зависимости от вашего формата это может быть сложно. Например, если вы пытаетесь воспроизвести онлайн-поток радио, который использует .pls или .m3u, вам придется проанализировать этот файл и вытащить истинные URL-адреса для использования.

Кроме того, вы должны иметь возможность использовать метод создания MediaPlayer с URL-адресом для начала потокового воспроизведения. Имейте в виду, что если URL-адрес потоков перенаправляется (что, вероятно, это так), вам может понадобиться разрешить URL-адрес. Простым способом сделать это является использование HttpURLConnection для открытия соединения, затем connect(), затем getURL(). Вам, скорее всего, понадобится строковый url, поэтому вызовите toExternalForm() из результата getURL().

Кроме того, если вы не работаете с MediaPlayer по URL-адресу, вам может потребоваться собственный механизм буферизации для получения данных с сервера. В этом случае вы можете попробовать этот учебник: http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/

Ответ 2

Из того, что я прочитал, вы должны просто сделать:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(streamingURL);
mediaPlayer.prepare();
mediaPlayer.start();

чтобы получить базовую функциональность, я верю, но я ее не тестировал сам.

Ответ 3

Самый простой способ воспроизведения радиоканала в android - использовать встроенный MediaPlayer, однако, когда источник данных из Интернета, метод prepare() требует много времени, и вы должны использовать prepareAsync() вместо этого, чтобы избежать блокировки ui:

    player = new MediaPlayer();
    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
                player.start();
            }
        }
    });

    try {
        player.setDataSource(currentChannelUrl);
        player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    } catch (IOException e) {
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        e.printStackTrace();
        return;
    }
    player.prepareAsync();