我正在尝试创建一个图像按钮的方法,当它点击背景音乐停止并且图像按钮改变另一个图像时,再次按下时它将像第一次一样返回并重放音乐,我正在尝试使用布尔,当音乐开始时它是真的,当音乐错误的时候,它就不起作用了! 另外我如何根据主要活动进行另一项活动或停止音乐?
public class MainActivity extends AppCompatActivity {
MediaPlayer mp ;
ImageButton SoundButton;
ImageButton NoSoundButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SoundButton = new ImageButton(this);
NoSoundButton = new ImageButton(this);
/*---------Image Buttons--------*/
SoundButton=(ImageButton) findViewById(R.id.sound);
SoundButton.setVisibility(View.GONE);
NoSoundButton=(ImageButton) findViewById(R.id.nosound);
NoSoundButton.setVisibility(View.VISIBLE);
/*---------Media Player--------*/
mp = new MediaPlayer();
mp = MediaPlayer.create(this, R.raw.aud);
mp.setLooping(true);
mp.start();
}
public void nosound(View view) {
SoundButton.setVisibility(View.VISIBLE);
NoSoundButton.setVisibility(View.INVISIBLE);
mp.stop();
mp.prepareAsync();
}
public void sound(View view) {
SoundButton.setVisibility(View.INVISIBLE);
NoSoundButton.setVisibility(View.VISIBLE);
mp.start();
}
}
答案 0 :(得分:2)
1)您必须更改MediaPlayer初始化的位置。
MediaPlayer mp = new MediaPlayer();
public class MainActivity extends AppCompatActivity {
boolean SoundStatus;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = new MediaPlayer();
mp = MediaPlayer.create(this, R.raw.aud);
mp.setLooping(true);
mp.start();
}
public void sound(View view) {
SoundStatus = true;
if (SoundStatus) {
mp.stop();
SoundStatus = false;
}
else {
mp.start();
SoundStatus = true;
}
}}
当然要确保音频文件存在。
2)如何传递按钮状态
您可以使用Bundle在按照
之类的活动之间传递按钮状态开始活动2
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_NAME, VALUE);
startActivity(intent);
在活动2中获取该值,如
@Override
protected void onCreate(Bundle savedInstanceState) {
....
boolean value = getIntent().getExtras().getBoolean(EXTRA_VALUE);
}
然后像上面那样做,将其传递给Activity 3。
或者
您可以在Activity 1中创建一个静态变量,然后从Activity 3中访问它。