2016-01-22 66 views
0

我有一个应用程序,它看起来像一个炸弹,当在数字用户点击,它就会发出声音,用下面的代码的Android播放原始文件

 final MediaPlayer mp = MediaPlayer.create(this, R.raw.c4_click); 
      mp.start(); 

工作正常,然后当个号码已经全面进入,用户然后点击一个按钮,所以现在将创建另一个声音

final MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.c4_plant); 
      mp.start(); 

,我的问题是,当这种“C4”已经种下,并在号码的另一个用户再次按下,声音消失了。我想以某种方式首先停止mediaplayer?或者我应该在这里做什么?

编辑: 我已经改变了数字点击声这一

Button btn = (Button) view; 
    if(mp != null){ 
     if(mp.isPlaying()){ 
      mp.stop(); 
      mp.release(); 
     } 
     mp = null; 
    } 
    mp = MediaPlayer.create(MainActivity.this, R.raw.c4_beep1); 
    mp.start(); 

和按钮点击声这一

  if(mp != null){ 
       if(mp.isPlaying()){ 
        mp.stop(); 
        mp.release(); 
       } 
       mp = null; 
      } 
      mp = MediaPlayer.create(MainActivity.this, R.raw.c4_plant); 
      mp.start(); 

但它崩溃后

编辑 :全班 full code here 我的第一个Android应用程序,请不要介意编程风格,这样

+0

[使用媒体播放器以重放相同的文件]的可能的复制(http://stackoverflow.com/questions/11533728/using-mediaplayer-to-replay-the-same-file) – Gavriel

+0

我试图请按照该帖子,但问题仍然存在 –

+0

然后请在您尝试他们建议的 – Gavriel

回答

2

上的数字点击

MediaPlayer mp = MediaPlayer.create(this, R.raw.c4_click); 
mp.start(); 

Button点击使用此代码。

if(mp != null){ 
    if(mp.isPlaying()){ 
     mp.stop(); 
     mp.release(); 
    } 
    mp = null; 
} 
mp = MediaPlayer.create(MainActivity.this, R.raw.c4_plant); 
mp.start(); 
+0

我已经试过这种方式来做到这一点,但这样做后,应用程序崩溃。在我拥有所有这些.stop和.release的东西之前,它只是没有输出任何声音,但它仍然运行正常 –

+0

抱歉,我没有得到你。我的代码是否适合你工作? @benjiWong –

+0

抱歉让人困惑,这不行。 –

相关问题