gpt4 book ai didi

java - android - MediaPlayer 在公共(public)静态时不播放

转载 作者:行者123 更新时间:2023-11-29 05:37:59 24 4
gpt4 key购买 nike

我看过很多关于此的其他帖子,但我无法让它发挥作用。我只是想用 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()。

最佳答案

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

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

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

编辑:

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

关于java - android - MediaPlayer 在公共(public)静态时不播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18750651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com