如何在Android中播放在线广播

时间:2011-01-07 12:42:50

标签: android audio-streaming

我正在开发Android应用程序,我在其中播放在线广播流。    我已经完成了媒体播放器课程,但我认为没有任何方法可以在线播放电台。如果有任何了解,请帮助我。

谢谢。   维克拉姆

3 个答案:

答案 0 :(得分:7)

维克拉姆,

您应该能够使用MediaPlayer实现这一目标;但是,根据您的格式,可能很难。例如,如果您尝试播放使用.pls或.m3u的在线广播流,则必须解析该文件,并提取要使用的真实网址。

除此之外,您应该能够使用MediaPlayer的创建方法和URL来开始流式播放。请记住,如果流URL重定向(可能会重定向),则可能必须解析URL。一个简单的方法是使用HttpURLConnection打开连接,然后使用connect(),然后使用getURL()。你可能需要一个字符串url,所以在getURL()的结果上调用toExternalForm()。

此外,如果使用MediaPlayer通过URL无法解决问题,您可能需要提供自己的缓冲机制来从服务器获取数据。既然如此,您可以尝试本教程:http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/

答案 1 :(得分:5)

从我所读到的,你应该能够做到:

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

获得我相信的基本功能,但我自己没有测试过。

答案 2 :(得分:1)

在android中播放无线电频道的最简单方法是使用内置的MediaPlayer,但是当数据源来自web时,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();