【问题标题】:How to play online radio in android如何在android中播放在线广播
【发布时间】:2011-06-05 06:18:18
【问题描述】:

我正在开发 android 应用程序,我可以在其中播放在线广播流。 我已经完成了媒体播放器课程,但我认为没有任何方法可以在线播放广播。如果有人知道这件事,请帮助我。

谢谢。 维克拉姆

【问题讨论】:

    标签: android audio-streaming


    【解决方案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/

    【讨论】:

    【解决方案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();
      

      【讨论】:

        猜你喜欢
        • 2016-04-28
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 2012-08-04
        • 2012-01-07
        • 2011-11-06
        • 2020-10-13
        • 1970-01-01
        相关资源
        最近更新 更多