如何在单击另一个 Activity 中的 ImageButton 时播放声音?

How do I play a sound on an ImageButton click in another Activity?

我正在尝试创建图像按钮的方法。单击它时,背景音乐停止,图像按钮变为另一幅图像。再次按下时,它会return像第一次一样重新播放音乐。

我正在尝试布尔值。当它为真时,音乐开始,当它为假时,音乐开始,但它不起作用!

此外,如何让另一个activity根据主activity播放或停止音乐?

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) 您必须更改 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 在活动之间传递按钮状态,如下所示

开始 activity 2

Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_NAME, VALUE);
startActivity(intent);

获得 activity 2 个赞

中的价值
@Override
protected void onCreate(Bundle savedInstanceState) {
....
boolean value = getIntent().getExtras().getBoolean(EXTRA_VALUE);
}

然后像上面一样做,把它传递给Activity 3.

您可以在 Activity 1 中创建一个静态变量,然后从 Activity 3.

访问它