我有一个按钮,当我点击它播放音乐时,怎么做,当我第二次点击时,停止播放音乐?
Button two = (Button)this.findViewById(R.id.button2);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
two.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp2.start();
}
});
好的,这个有效:
Button one = (Button)this.findViewById(R.id.button1);
final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.n);
one.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if (mp1.isPlaying()) {
mp2.pause();
}
else {
mp2.start();
}
;
}});
上面有Pause的人可以使用,但是如果我想停止音乐,它就不起作用了。 以下不工作:
@Override
public void onClick(View v) {
if (mp1.isPlaying()) {
mp2.stop();
}
else {
mp2.start();
}
;
}});
我收到错误:在状态0开始调用 错误(-38,0)
答案 0 :(得分:3)
根据http://developer.android.com/reference/android/media/MediaPlayer.html,我想你可以这样做:
Button two = (Button)this.findViewById(R.id.button2);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
two.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// If the music is playing
if(mp2.isPlaying() == true)
// Pause the music player
mp2.pause();
// If it's not playing
else
// Resume the music player
mp2.start();
}
});
你实际上可以只写
if(mp2.isPlaying())
而不是
if(mp2.isPlaying() == true)
这只是为了理解正在发生的事情。
答案 1 :(得分:2)
您可以进行布尔检查以查看它是否已启动(并将布尔值设置为false),如果是,则停止音乐,如果不启动它(并将布尔值设置为true)。类似的东西:
public void onClick(View v)
{
if(musicPlaying == false)
{
mp2.start();
musicPlaying = true;
}
else
{
mp2.stop();
musicPlaying = false;
}
}
答案 2 :(得分:1)
if(mp2.isPlaying()) {
mp2.pause();
} else {
mp2.start();
}
答案 3 :(得分:1)
这是我用来启动和停止音乐的内容,您必须准备MediaPlayer进行播放。注意:这将从停止的地方开始播放音乐。
如果您正在播放音乐,则应使用prepareAsync()
musicButton = (Button) findViewById(R.id.btn_dj_player);
musicButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()) {//check if a song is already playing
mp.stop();
try {
mp.prepare();//get the mediaplayer reeady for playback
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
mp.start();
}
}
});
答案 4 :(得分:1)
如果只有一种声音,并且只想按一个按钮启动或停止,则可能会有所帮助。
Button button_name = (Button)this.findViewById(R.id.Your_button_id_Here);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.YOur_audio_File_name_here);
button_name.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if(mp.isPlaying())
{
mp.pause();
}
else
{
mp.start();
}
}
});
答案 5 :(得分:0)
您是否尝试过使用seekTo()
功能?
类似的东西:
if (mp.isPlaying()) {
mp.stop();
mp.prepareAsync();
mp.seekTo(0);
} else {
mp.start();
}
}
我只是在这里猜测,但可能值得研究。 : - )
答案 6 :(得分:0)
我完成了如下:
我声明了一个布尔变量:
boolean isButtonClicked = false;
然后我在这样的方法中设置了if else:
initPlaySound()
{
if(isButtonClicked)
{
player.start();
} else{
player.stop();
}
最后,我在方法中设置了按钮的onClick:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isButtonClicked = !isButtonClicked;
initPlaySound();
}
});
基本上,当首次单击该按钮时,布尔值设置为与其当前状态(false为true)相反,并且if执行中的代码。再次单击该按钮后,布尔值再次设置为相反(true为false),声音停止。
答案 7 :(得分:0)
我以手动方式解决了这个问题。如果正在播放声音,我将声音包裹在开头(seekTo(0)),然后暂停声音。如果声音已经暂停,则只调用seekTo(0)。
public void onClick(View v) {
if(mp.isPlaying()){
mp.seekTo(0);
mp.pause();
}
else{
mp.seekTo(0);
}
} ;
答案 8 :(得分:0)
添加全局变量boolean flag = false;
if(flag==false)
{
mp=MediaPlayer.create(this, R.raw.abc);
mp.start();
playbutton.setText("Pause");
flag=true;
}
else if(mp.isPlaying()&&flag==true)
{
mp.pause();
playbutton.setText("Play");
flag=false;
}
如果您想在应用中使用与PLAY / PAUSE相同的按钮,此代码将起作用。希望这可以帮助。在用于播放或暂停的onClick()函数按钮中添加此代码。