如何在ImageButton上播放声音点击Another Activity?

时间:2016-11-19 14:54:48

标签: android audio onclick android-mediaplayer android-imagebutton

我正在尝试创建一个图像按钮的方法,当它点击背景音乐停止并且图像按钮改变另一个图像时,再次按下时它将像第一次一样返回并重放音乐,我正在尝试使用布尔,当音乐开始时它是真的,当音乐错误的时候,它就不起作用了! 另外我如何根据主要活动进行另一项活动或停止音乐?

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();
}

}

1 个答案:

答案 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中访问它。