0

我是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();                    
        }               
    }); 
   }    
}
4

1 回答 1

0

首先,如果您像这样进行创建,则不需要手动设置数据源:MediaPlayer.create(this, R.raw.song);此外,在这种情况下,您不需要调用prepare(),因为MediaPlayer.create()这样做会为您服务。

我会建议这种方法(假设你不希望开始按钮在它已经播放的情况下做任何事情):

开始按钮监听器:

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

停止按钮监听器:

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

我没有测试这个,所以我期待你的回应

于 2013-02-26T08:08:58.767 回答