1

我已经看过很多其他关于此的帖子,但我无法让它发挥作用。我只是想使用 MediaPlayer 播放一首简单的歌曲。这不是 UI 的按钮问题,因为我可以验证按钮方法 startMusic 和 stopMusic 是否被调用。

播放器.play(); player.stop() 什么也不做。

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


public class MainActivity extends Activity
{
    private static MediaPlayer player = new MediaPlayer();
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        player.create(MainActivity.this,R.raw.sadsadsad);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    public void changeLabel(View view)
    {
        TextView myTextView = (TextView) findViewById(R.id.myTextView);
        myTextView.setText("Label changed");
    }

    public void playMusic(View view)
    {
        player.start();
    }

    public void stopMusic(View view)
    {
        player.stop();
    }
}

再次,播放和停止按钮工作,断点命中 .start() 和 .stop()。

4

2 回答 2

2

从关于停止播放器并且它不再播放的评论中。当媒体播放器停止时,您需要再次准备()它。如果您想停止媒体播放器并且不必再次准备它,我会建议

public void stopMusic(View view)
{
    if(player != null && player.isPlaying())
    {
        player.pause();
        player.seekTo(0);
    }
}

如果您查看此处的状态列表,您应该知道发生了什么。您还使用实例(播放器)而不是类(MediaPlayer)的静态方法(create(..))

编辑:

如你所问。使用 MediaPlayer.create(...) 是正确的方法,如果您使用像 eclipse 这样的 IDE,它会警告您,由于 MediaPlayer.create 是一个静态方法,它应该从类 (MediaPlayer) 中使用,而不是创建的实例。我不确定如果通过实例完成是否会导致问题,但我遵循所有警告都是错误的理念,因此我尝试遵守标准编码约定以防万一。

于 2013-09-11T21:44:35.480 回答
1

不确定这是否可行,因为我没有太多经验,MediaPlayer但评论太多。不管怎样,试试

MediaPlayer player;
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    player = MediaPlayer.create(MainActivity.this,R.raw.sadsadsad);
}

编辑

尝试移动

player = MediaPlayer.create(MainActivity.this,R.raw.sadsadsad);

进出onCreate()_playMusic()

 public void playMusic(View view)
{
    player = MediaPlayer.create(MainActivity.this,R.raw.sadsadsad);
    player.start();
}

我也认为你应该打电话player.release()stopMusic()。在这里可能无关紧要,但我相信它会很安全。

于 2013-09-11T20:50:02.713 回答