无法停止或暂停音乐

时间:2013-01-22 06:52:13

标签: android media-player

我正在尝试在我的应用中播放音乐。当我点击“播放”按钮但是当我点击“停止”按钮时无法停止音乐时,我可以播放,请帮助查看此代码并指出问题。我正在使用MediaPlayer的pause()来暂停音乐。

public class MainActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button)findViewById(R.id.Start);
    btn.setOnClickListener(this);

    Button btn1 =(Button)findViewById(R.id.stop);
    btn1.setOnClickListener(this);

}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    MediaPlayer mp = MediaPlayer.create(this, R.raw.test_cbr);
    switch(v.getId()){
        case R.id.Start:                
            mp.start();
        break;
        case R.id.stop:
            mp.pause();
            Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();
        }
    }

     }

我正在使用提醒信息。我收到此提示消息但无法暂停音乐。

4 个答案:

答案 0 :(得分:1)

像这样修改你的代码,

public class MainActivity extends Activity implements OnClickListener {
 MediaPlayer mp =null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   mp = MediaPlayer.create(this, R.raw.test_cbr);  
    Button btn = (Button)findViewById(R.id.Start);
    btn.setOnClickListener(this);

    Button btn1 =(Button)findViewById(R.id.stop);
    btn1.setOnClickListener(this);

}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    switch(v.getId()){
        case R.id.Start:   

            mp.start();
        break;
        case R.id.stop:
           if(mp!=null && mp.isPlaying()){
                mp.pause();
       Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();
            }

        }
    }

     }

问题可能是因为您每次都在onClick中创建一个新的媒体播放器实例,因此之前创建的实例将会播放,但您尝试停止新创建的实例。

因此,全局分配它并仅在启动按钮中重新启动它应该可以完成这项工作。

答案 1 :(得分:1)

这是因为您每次点击都会创建一个新的MediaPlayer实例。

您应该只有一个MediaPlayer

的实例

答案 2 :(得分:0)

每次媒体播放器都在创建新实例。将其设为全局。

在代码中尝试此更改。

case R.id.stop:
     if(mp.isPlaying() && mp!=null)
     { 
       mp.pause();
     }
     Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();

答案 3 :(得分:0)

switch (whatsong) {

    case 1: 
        if(song1.isPlaying()){
            song1.pause();          
        }