2012-07-16 65 views
2

大家好,感謝Shoutcast的Streamming提前,如何與MediaPlayer的採用Android 2.3.3

我一直都在尋找一天論壇和互聯網,我沒有得到任何明確這一點。我不確定是否有可能以直接和簡單的方式。我讀了所有的時間,自2.2它是原生支持,但我沒有看到和示例,其中它的工作原理很容易

首先,我做一些測試與網絡上的一些MP3播放和這個代碼工作正常:

mp = new MediaPlayer(); 
mp.setDataSource(localContext, Uri.parse(SomeURL.mp3));  
mp.prepare(); 
mp.start() 

但現在....我必須重現流音頻,並且我已經從shoutcast服務器給出了一個ip和端口,我嘗試了所有類型的東西,但所有時間我都在媒體播放器中出現錯誤, (0,-38)錯誤,一般。

mp = new MediaPlayer(); 
mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
//mp.setDataSource("http://xxx.xxx.xxx.xxx:xxxx");   
mp.setDataSource("http://xxx.xxx.xxx.xxx"); 
mp.prepareAsync(); 
mp.start() --> it crashs here 

我不知道如果我這樣做正確的....我第一次面對流問題....

是否有可能使一個簡單的方法這樣呢?如果不是......有什麼解決方案?

謝謝!

回答

3

後沒有太多的谷歌搜索結果的兩天,我發現了一個網頁有很多公共流URL link的,我嘗試了一些與原來的代碼,並在Windows Media Player。幾乎所有的都沒有在wmp上工作,但有些是...所以我嘗試了其中的一些,並與鏈接它沒有工作......但與IP +端口是的! 它似乎問題是與ip +端口我有測試.... 所以我的代碼是非常簡單的最後....它適用於西班牙無線電。

if(!mp.isPlaying()){ 
    try{ 
    mp = new MediaPlayer(); 
    mp.setOnPreparedListener(this); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    url="http://91.121.92.186:8060"; 
    mp.setDataSource(url); 
    mp.prepareAsync(); 
    }catch(IOException e){ 
    e.printStrackTrace(); 
    } 
} 

@Override 
public void onPrepared(MediaPlayer mp) { 
    mp.start();//Cuando acaba de cargar inicia la reproducción 
} 
2

您提供的代碼崩潰,因爲如果你使用「mp.prepareAsync();」那麼你不能「mp.start」你必須使用準備監聽器作爲「mp.setOnPreparedListener(new OnPreparedListener(){

   @Override 
       public void onPrepared(MediaPlayer arg0) { 
        // TODO Auto-generated method stub 
        mp.start(); 
        }});"