选择要在其他活动中播放的活动中的声音

时间:2017-06-01 12:12:59

标签: java android soundpool

我有这个想法,我无法编码所以我在这里寻求帮助

我有两个活动,第一个: Xml文件:按钮 Java文件:Button的一个点击监听器,用于从res / raw

中使用SoundPool类播放声音效果

- 一切都很简单 -

想要做的是创建第二个活动,用户可以从单选按钮组中选择Sound1或Sound2等其他声音效果,而不是播放。

这是我的想法,所以请帮我编码,因为我已经被困2周了,下一步我有0个线索。

SOS =)

1 个答案:

答案 0 :(得分:0)

您可以为要播放的音效定义全局变量:

int activeSoundEffectRawId = R.raw.defaultSound;

使用SoundPool的load方法播放。

要选择要播放的声音,您可以在启动Activity2的xml文件中添加另一个按钮:

Button btnSelectSound = (Button) findViewById (R.id.button2);
btnSelectSound.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivityForResult(new Intent(Activity1.this, Activity2.class), 1000);
    }
});

使用请求代码1000启动结果活动非常重要(此数字可以确定更改)。

在练习2中,您需要选择声音的逻辑,例如“确定”按钮以保存选择。 ok按钮会将所选声音移交给Activity1:

Button btnOk = (Button) findViewById (R.id.ok);
btnOk.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("soundRawId", selectedSoundRawId /* <- replace this with the selected sound, like R.raw.yourSound */);
        setResult(Activity.RESULT_OK,returnIntent);
        finish();
    }
});

之后,您可以在Activity1中设置所选声音:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1000 && resultCode == Activity.RESULT_OK) {
        selectedSoundRawId = data.getIntExtra("soundRawId");
    }
}