2014-01-12 51 views
-1

我试图为我的背景音乐打开和关闭按钮。音乐马上开始。当我按下关闭按钮时音乐关闭,但是当我按下按钮时关闭音乐。请帮助如何为Android编程开/关按钮?

mp=MediaPlayer.create(this, R.raw.islandsong); 
    mp.setLooping(true); 
    mp.start(); 

    onButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (mp==null){ 
       mp.start(); 
      } 
     } 
    }); 

    offButton.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v) { 
      if (mp!=null){ 
       mp.stop(); 
       mp.release(); 
       mp = null; 
      }    
     } 
    }); 
+2

'if(mp == null){ mp.start(); “这并不是你想要的。 – SLaks

+0

发布堆栈跟踪。你可以使用一个toogle按钮 – Raghunandan

+2

不要通过stackoverflow进行调试。强制关闭意味着你应该检查你的logcat以查看它是否崩溃。如果在研究之后堆栈跟踪让你感到困惑,请在这里发帖。 – keyser

回答

2

您正在使用错误的方法。您应该检查音乐播放器是否正在播放,如果是这样,请停止播放。

try { 
    if(mp.isPlaying()){ 
     mp.stop(); 
     mp.release(); 
    } 
} catch(Exception ex) { 
    ex.printStackTrace() 
} 

更新 你需要编辑你的代码如下,如果你想播放和停止媒体播放器

onButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (!mp.isPlaying()){ 
       mp.start(); 
      } 
     } 
    }); 

    offButton.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v) { 
      try { 
       if(mp.isPlaying()){ 
       mp.stop(); 
       mp.release(); 
       } 
       } catch(Exception ex) { 
       ex.printStackTrace() 
       }    
     } 

此代码将确保Media Player播放歌曲,只有当它是不只有在播放时才播放和停止。

+1

Rohan Kandwal是对的。如果你这样做:** mp = null **,那么mp将不再被访问,除非你不重新创建它(一旦设置为null,它将永远丢失)。 +1提供正确的答案。 –