如何在android中播放在线广播
Posted
技术标签:
【中文标题】如何在android中播放在线广播【英文标题】:How to play online radio in android 【发布时间】:2011-06-05 06:18:18 【问题描述】:我正在开发 android 应用程序,我可以在其中播放在线广播流。 我已经完成了媒体播放器课程,但我认为没有任何方法可以在线播放广播。如果有人知道这件事,请帮助我。
谢谢。 维克拉姆
【问题讨论】:
【参考方案1】:维克拉姆,
您应该能够使用 MediaPlayer 实现此目的;但是,根据您的格式,这可能会很困难。例如,如果您尝试播放使用 .pls 或 .m3u 的在线广播流,则必须解析该文件,并提取要使用的真实 URL。
除此之外,您应该能够使用带有 URL 的 MediaPlayer 的 create 方法来开始流式播放。请记住,如果流 URL 重定向(它可能会),您可能必须解析 URL。一个简单的方法是使用 HttpURLConnection 打开一个连接,然后是 connect(),然后是 getURL()。您可能需要一个字符串 url,因此在 getURL() 的结果上调用 toExternalForm()。
此外,如果您无法通过 URL 使用 MediaPlayer,您可能必须想出自己的缓冲机制来从服务器获取数据。既然如此,你可以试试这个教程:http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/
【讨论】:
@brack 您提供的链接不起作用我们可以获取任何其他链接吗? 答案中指向 blog.pocketjourney.com 的链接已失效。 试试这个链接:pocketjourney.wordpress.com/2008/04/04/…【参考方案2】:根据我的阅读,您应该能够做到:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(streamingURL);
mediaPlayer.prepare();
mediaPlayer.start();
我相信获得基本功能,但我自己没有测试过。
【讨论】:
【参考方案3】:在android中播放广播频道最简单的方法是使用内置的MediaPlayer,但是当数据源来自网络时,prepare()方法需要很长时间才能执行,你应该使用prepareAsync()来避免阻塞用户界面:
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();
【讨论】:
以上是关于如何在android中播放在线广播的主要内容,如果未能解决你的问题,请参考以下文章
Android 编程 - 如何从广播接收器播放 SoundPool 声音?
如何解决在android开发中WebView在线播放视频黑屏啊?
如何正确跟踪播放位置? [Android 媒体广播通知 Spotify API]