我正在开发一款Android应用程序,其中我需要实现在线广播流媒体播放。我已经查阅了MediaPlayer类的文档,但我认为它并没有提供任何在线广播流媒体播放的方法。如果有人知道如何实现,请帮忙指导一下。
谢谢。 Vikram
我正在开发一款Android应用程序,其中我需要实现在线广播流媒体播放。我已经查阅了MediaPlayer类的文档,但我认为它并没有提供任何在线广播流媒体播放的方法。如果有人知道如何实现,请帮忙指导一下。
谢谢。 Vikram
Vikram,
您应该能够使用MediaPlayer来实现这一点;然而,根据您的格式,可能会比较困难。例如,如果您试图播放使用.pls或.m3u的在线广播流,则必须解析该文件并提取要使用的真实URL。
除此之外,您应该能够使用MediaPlayer的create方法和URL开始流媒体播放。请记住,如果流的URL重定向(很可能会发生),则可能需要解析URL。一个简单的方法是使用HttpURLConnection打开连接,然后connect(),然后getURL()。您可能需要一个字符串url,因此在从getURL()的结果中调用toExternalForm()。
此外,如果通过URL使用MediaPlayer无法正常工作,则可能需要想出自己的缓冲机制以从服务器获取数据。在这种情况下,您可以尝试使用此教程:http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/
根据我所了解的,您只需要这样做:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(streamingURL);
mediaPlayer.prepare();
mediaPlayer.start();
我认为这可以获得基本功能,但我自己还没有测试过。
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();