Android Soundboard一次只有一个声音

时间:2014-02-14 11:12:41

标签: java android android-mediaplayer

我正在尝试用多个按钮编写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()这样的应用程序都不会起作用。 我的功能/代码应该改变什么建议?

1 个答案:

答案 0 :(得分:1)

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

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