2014-02-24 90 views
0

我認爲這是一個體面的方式來使用MediaPlayer的按鈕或一次性使用。我對嗎? try塊是否必需?我應該怎麼試着抓住這裏?我真的很難找到一種堅實的方式來播放一次聲音。這是使用MediaPlayer的好方法嗎?

// Button sound 
private void playButtonSound() { 
    try{ 
     final MediaPlayer startPlayer = MediaPlayer.create(
       getApplicationContext(), R.raw.sound); 
     startPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       startPlayer.release(); 
      } 
     }); 
     startPlayer.start(); 
    } catch(Throwable t){} 
} 
+0

嘗試使用startPlayer爲全局變量,檢查空,並用它 –

+0

感謝清之前的狀態。是否有必要嘗試?對不起,如此需要,但你如何檢查狀態?你的意思是.isPlaying()? –

+0

我不認爲你每次都需要一個try/catch-block,你必須經理的球員狀態,參考這裏:http://developer.android.com/reference/android/media/MediaPlayer.html –

回答

0

我用它這樣的:

public class PlayaudioActivity extends Activity { 

private MediaPlayer mp; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Button b = (Button) findViewById(R.id.button1); 

b.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    stopPlaying(); 
    mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.tosse); 
    mp.start(); 
    } 

}); 


} 

private void stopPlaying() { 
    if (mp != null) { 
     mp.stop(); 
     mp.release(); 
     mp = null; 
     } 
    } 
} 
+0

我曾經做過它是這樣的,但我得到錯誤報告。像這樣:java.lang.RuntimeException:無法暫停活動MainActivity}:java.lang.IllegalStateException –

+0

無論您何時調用stopPlaying(),都可以使用布爾標誌,如果您停止運行,可以將其設置爲true,而不是檢查它是否爲false調用stopPlaying()。 – Smile2Life

相關問題