2014-02-24 91 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

相关问题