我正在开发Android应用程序,我在其中播放在线广播流。 我已经完成了媒体播放器课程,但我认为没有任何方法可以在线播放电台。如果有任何了解,请帮助我。
谢谢。 维克拉姆
答案 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();