gpt4 book ai didi

java - Android Soundboard 一次只有一种声音

转载 作者:行者123 更新时间:2023-11-30 03:06:11 25 4
gpt4 key购买 nike

我正在尝试编写一个带有多个按钮的 Android Soundboard。每个按钮应该播放不同的声音。

我在每个按钮上都有一个 OnClickListener:

    buttonAlan.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
playSound("alan");
}
});

这些按钮中的每一个都调用以下函数。

private void playSound(String sound) {

int path = getResources().getIdentifier(sound, "raw", getPackageName());
mediaplayer = MediaPlayer.create(this, path);


try {
mediaplayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaplayer.start();
}

音板可以工作,但每次单击按钮时它都会一遍又一遍地播放声音。我需要媒体播放器停止播放,但每次我写类似 mediaplayer.stop() 的东西时,应用程序根本无法运行。有什么建议我应该在我的函数/代码中更改什么吗?

最佳答案

我用音池解决了这个问题,在那里你还可以同时播放多个声音。我首先初始化它并在构造函数中加载我需要的声音

SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
int gameOverSound = soundPool.load(context, R.raw.gameover, 1);

然后你可以这样玩:

public void playSound(int soundId) {
soundPool.play(soundId, 1.0f, 1.0f, 0, 0, 1);
}

编辑:关于媒体播放器,您必须在开始播放另一种声音之前调用 stop() 和 release() 。你也可以设置

mPlayer.setLooping(false);

关于java - Android Soundboard 一次只有一种声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com