2015-04-19 256 views
-2

我試圖播放遠程服務器中的歌曲,並且位於此鏈接中。你也可以檢查歌曲。但根據我編碼的歌曲沒有從遠程服務器播放。Android Mediplayer未播放音樂

Button b = (Button) findViewById(R.id.button1); 
b.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     try{ 

     mySong = new MediaPlayer(); 
     mySong.setDataSource("http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3"); 
     mySong.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mySong.prepareAsync(); 
     mySong.start();  

     } 
     catch(Exception ee){ 
      TextView tv = (TextView) findViewById(R.id.textView1); 
      tv.setText(ee.getMessage()); 
     } 
     finally{ 
      mySong.reset(); 
      mySong.release(); 
     } 
    } 
}); 
+0

對不起,我在這裏沒有看到具體的問題。請提供相關日誌。 –

回答

1

你是認真的嗎? 你剛開始時只是爲了重置並立即發佈它?找到錯誤的邏輯!

或者你認爲最後的聲明將在歌曲播放完畢後執行?

1

您可以在代碼中調用prepareAsync()。因爲您正在異步準備,所以在宣佈您的活動實施MediaPlayer.OnPreparedListener後,您將收到名爲onPrepared(MediaPlayer)的回叫。在這裏你應該打電話給mySong.start()。在prepareAsync之後調用它很可能會導致發生IllegalStateException,因爲MediaPlayer尚未準備好。最後,你需要設置一個MediaPlayer.OnCompletionListener,這樣你就可以釋放MediaPlayer而不是finally塊。此外,重置MediaPlayer並釋放是多餘的。如果你要馬上釋放它,沒有理由重置它。