如何在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]

如何播放存储在在线文件服务器上的视频?

手机端ios和android浏览器 如何实现mms广播电台在线音频播放?

Android国标接入端如何播放GB28181平台端语音广播数据