我已经看过很多关于此的帖子,但是我无法让它发挥作用。我只是想用MediaPlayer播放一首简单的歌曲。它不是来自UI的按钮问题,因为我可以验证按钮方法startMusic,并且调用stopMusic。
player.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()。
答案 0 :(得分:2)
关于停止播放器的评论,而不是再次播放。 当媒体播放器停止时,您需要再次准备()它。 如果你想停止媒体播放器而不必再次准备它我会建议
public void stopMusic(View view)
{
if(player != null && player.isPlaying())
{
player.pause();
player.seekTo(0);
}
}
如果查看状态列表here,您应该知道发生了什么。 你也使用静态方法(create(..))从实例(播放器)而不是从类(MediaPlayer)
修改强>
正如你问的那样。使用MediaPlayer.create(...)是正确的方法,如果你使用像eclipse这样的IDE,它会警告你,因为MediaPlayer.create是一个静态方法,所以应该从类(MediaPlayer)而不是创建的实例中使用它。我不确定如果通过实例完成它是否会导致问题,但我遵循所有警告都是错误的原则,因此我试图保持标准编码约定以防万一。
答案 1 :(得分: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()
。这可能没关系,但我相信它会安全。