单击按钮时,我的Android应用程序无法再次播放

时间:2013-02-26 07:31:50

标签: android-mediaplayer

我是android编程的新手。我的第一个应用是Android媒体播放器。

我建了两个按钮:一个用来播放一首歌,另一个用来阻止它。

我的应用程序运行正常;问题是我可以播放并阻止它,但我不能再播放这首歌了。

我尝试使用setDataSource(),但会触发错误。

这是代码;该文件位于raw/song.mp3

    package com.example.test6;

    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.View;
    import android.widget.Button;

    public class MainActivity extends Activity {

    MediaPlayer mp; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

    setContentView(R.layout.activity_main);
     final Button btnPlay = (Button)this.findViewById(R.id.button1);
    final Button btnStop = (Button)this.findViewById(R.id.button2);

    btnPlay.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {
                mp.start();

        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {       
                mp.stop();
                mp.reset();
        if(mp.isPlaying()){
                mp.stop();
                }else{

        mp.setDataSource("res/raw/song.mp3");
            mp.prepare();
            mp.start();                    
        }               
    }); 
   }    
}

1 个答案:

答案 0 :(得分:0)

首先,如果您正在进行如下创建,则无需手动设置数据源:MediaPlayer.create(this, R.raw.song);此外,在这种情况下,您无需调用{{1}因为prepare()为你做了这件事。

我会建议采用这种方法(假设您不希望开始按钮在已经播放的情况下执行任何操作):

开始按钮监听器:

MediaPlayer.create()

停止按钮监听器:

if (mp==null) {
     mp = MediaPlayer.create(this, R.raw.song);
}
if (!mp.isPlaying()) {
     mp.start();
}

我没有对此进行测试,所以我期待您的回复