我希望能够让您单击一个按钮来启动并再次单击以停止,或者每次单击时都不会启动多个声音的开始按钮。我有一个音频文件,如果你点击开始3次,它有3个不同的轨道同时进行。停止按钮只停止一个,其他曲目一直播放,直到我杀死应用程序。
这是我的代码。我是菜鸟
package com.example.mitch_000.button;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
public class MyActivity extends Activity {
MediaPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
Button button1=(Button)findViewById(R.id.button1);
Button button2=(Button)findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player=MediaPlayer.create(MyActivity.this,R.raw.lw);
player.start();}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player.stop();
}
});
}
}
答案 0 :(得分:1)
当您在player=MediaPlayer.create(MyActivity.this,R.raw.lw);
中致电OnClickListener
时,您正在创建音频文件的新实例,然后在每次点击该按钮时播放 。
您需要在player
(OnClickListener
)之外创建OnCreate
对象的单个实例,然后您可以使用此引用来播放,暂停和停止一个音频文件。
以下是您可以使用的代码:
package com.example.mitch_000.button;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
public class MyActivity extends Activity {
MediaPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
player=MediaPlayer.create(MyActivity.this,R.raw.lw);
Button button1=(Button)findViewById(R.id.button1);
Button button2=(Button)findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player.start();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player.stop();
}
});
}
答案 1 :(得分:-1)
把
MediaPlayer mp = MediaPlayer.create(this, R.raw.mamacita_zero);
在setOnClickListener
之外
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
Button button1=(Button)findViewById(R.id.button1);
Button button2=(Button)findViewById(R.id.button2);
MediaPlayer mp = MediaPlayer.create(MyActivity.this,R.raw.lw);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player.stop();
}
});
}
}
您似乎每次点击都比您需要的更多。您正在为Activity的视图中的每次单击创建并添加新的onClickListener,而不是Button。您只需要设置一次侦听器,而不是设置Button而不是整体视图;我倾向于在Activity的构造函数中这样做。