【问题标题】:Not able to stop or pause Music无法停止或暂停音乐
【发布时间】:2013-01-22 14:56:46
【问题描述】:

我正在尝试在我的应用中播放音乐。单击播放按钮时我可以播放,但单击停止按钮时无法停止音乐,请帮助查看此代码并指出问题。我正在使用 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();
        }
    }

     }

我正在使用警报消息。我收到此警报消息,但无法暂停音乐。

【问题讨论】:

  • 每次点击按钮都不创建新的MediaPlayer实例,一定是问题

标签: android media-player


【解决方案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 中创建一个新的媒体播放器实例,因此前一个创建的媒体播放器已经在播放,但您试图停止新创建的媒体播放器。

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

【讨论】:

    【解决方案2】:

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

    你应该只有一个 MediaPlayer 的实例

    【讨论】:

      【解决方案3】:

      您每次都在创建新的媒体播放器实例。使其成为全球性的。

      在您的代码中尝试此更改。

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

      【讨论】:

        【解决方案4】:
        switch (whatsong) {
        
            case 1: 
                if(song1.isPlaying()){
                    song1.pause();          
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-30
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多