繁体   English   中英

Android Soundboard一次只能发出一种声音

[英]Android Soundboard only one sound at a time

我正在尝试编写带有多个按钮的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停止播放,但是每次我写诸如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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM