2011-01-07 44 views
15

我正在研究android應用程序,我在其中播放在線廣播流。 我已經通過媒體播放器課程,但我不認爲有任何方法可以在線播放電臺。如果有人知道這件事,請幫助我。如何在android中播放在線廣播

謝謝。 維克拉姆

回答

7

Vikram,

你應該能夠使用MediaPlayer來實現這一點;然而,取決於你的格式,它可能很難。例如,如果您嘗試播放使用.pls或.m3u的在線廣播流,則必須解析該文件,然後提取要使用的真實網址。

除此之外,您應該可以使用MediaPlayer的創建方法和URL來開始流式播放。請記住,如果流網址重定向(它可能會這樣做),您可能需要解析URL。一個簡單的方法是使用HttpURLConnection打開一個連接,然後connect(),然後getURL()。你可能需要一個字符串url,所以從getURL()的結果調用toExternalForm()。

此外,如果事情不適合MediaPlayer通過URL工作,則可能需要使用自己的緩衝機制來從服務器獲取數據。既然如此,你可以嘗試這個教程:http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/

+3

你能詳細說明嗎?請帶一些代碼? – iTurki 2011-07-31 05:49:31

5

從我讀過的,你應該能夠做到:

MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDataSource(streamingURL); 
mediaPlayer.prepare(); 
mediaPlayer.start(); 

得到基本的功能,我相信,但我沒有測試它自己。

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(); 
相關問題