2011-01-27 130 views
1

现在扮演的第一次记者,停在第二次按或按另一种声音按钮。如果我让声音播放,我可以重新启动它,或者在单个媒体上播放另一个声音。的Android:媒体播放器启动/停止播放原始资源

我的目标是第二次按下同一个按钮来停止它,但按下一个新按钮即可开始新的声音,而不是先按下新按钮来停止旧声音,然后再次按下开始新的声音。

我可以看到,为什么它做什么,现在这样,但我不知道如何使它工作就是我想要的。

public void playSound(int input){ 
    if (mp!=null && mp.isPlaying()) { 
     mp.stop(); 
     mp.reset(); 
    } else{ 
     if (mp!=null){ 
      mp.reset(); 
      mp.release(); 
     } 
     mp = MediaPlayer.create(Soundboard.this, input); 
     mp.start(); 
    } 
} 
+0

编辑。它会播放声音,一路过关斩将,然后有一对夫妇的第二个超越等待年底前该按钮会再次发挥作用。请帮忙。谢谢。 – Aaron 2011-01-27 08:47:32

回答

3

的代码块:

if (mp!=null){ 
    mp.reset(); 
    mp.release(); 
} 

将永远不会被执行。 mp只能null在这一点上,因为它是在测试if (mp != null)else块。这表明您对使用这种方法的想法存在缺陷。

如果声音起到通过,并按下按钮,那么这段代码将执行:

mp.release(); 
mp = null; 

由于mp不是null,该else块不执行,并且没有新的播放声音。当按钮被按下第二次,mp现在是nullelse块被执行,创建一个新的MediaPlayer和播放声音。