无法让媒体播放器播放mp3

时间:2014-11-30 23:08:08

标签: java android

任何人都可以告诉我为什么这段代码不起作用?它编译但是当我点击按钮时没有播放然后它崩溃了。我是菜鸟= [

public class MainActivity extends ActionBarActivity {

private MediaPlayer newTune;
    public void playB(View paramView) throws IOException {
    newTune = MediaPlayer.create(this, R.raw.b);

    if (newTune.isPlaying()) {
        // newTune.stop();
    } else {
        newTune.prepare();
        newTune.start();
    }
}

1 个答案:

答案 0 :(得分:0)

我可以看到一些问题。

1。)您不需要致电prepare(),因为create()已经为您处理过此事。

2。)newTune.isPlaying()总是假的,因为你刚刚创建了一个新的MediaPlayer。

来自文档:

http://developer.android.com/reference/android/media/MediaPlayer.html

MediaPlayer.onCreate() ...

  

为给定资源ID创建MediaPlayer的便捷方法。上   成功,prepare()已经被调用,绝不可以   再次打电话。

尝试这样的事情:

public class MainActivity extends ActionBarActivity {

private MediaPlayer newTune;
    public void play() {
    newTune = MediaPlayer.create(this, R.raw.b);

    newTune.start();
    }
}

这是一个更好的处理整个事情的简单例子:

public class MainActivity extends Activity {

    private MediaPlayer mMediaPlayer;
    private boolean mIsPrepared;

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

        mMediaPlayer = MediaPlayer.create(this, R.raw.raw1);
        mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mIsPrepared = true;
            }
        });

        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                playOrPause();
            }
        });
    }

    public void playOrPause() {
        if (mMediaPlayer == null || !mIsPrepared) {
            return;
        }
        if (!mMediaPlayer.isPlaying()) {
            mMediaPlayer.start();
        } else {
            mMediaPlayer.pause();
        }
    }

}