单击按钮时如何发出随机声音?

Posted

技术标签:

【中文标题】单击按钮时如何发出随机声音?【英文标题】:How to make Random sound when button click? 【发布时间】:2015-11-27 15:52:53 【问题描述】:

所以我这里有 4 个声音,我用的是 SoundPool

     sound1 = soundPool.load(this, R.raw.aww, 1);
     sound2 = soundPool.load(this, R.raw.arh, 1);
     sound3 = soundPool.load(this, R.raw.agg, 1);
     sound4 = soundPool.load(this, R.raw.uhh, 1);

所以我想知道如何让按钮选择随机声音:

    click= (Button)findViewById(R.id.bm);
    click.setOnClickListener(new View.OnClickListener() 

          public void onClick(View click)             
             //choose one of four sound to play   
            
        );

有人有什么想法吗?

【问题讨论】:

到目前为止你尝试过什么?我会将所有引用放入一个数组中,生成一个随机索引并在所述索引上播放声音。 【参考方案1】:

您可以将 soundID 存储在一个数组中,并使用 Java 的 Random 类随机选择其中一个。

int[] sound = new int[4];
sound[0] = soundPool.load(this, R.raw.aww, 1);
sound[1] = soundPool.load(this, R.raw.arh, 1);
sound[2] = soundPool.load(this, R.raw.agg, 1);
sound[3] = soundPool.load(this, R.raw.uhh, 1);

Random random = new Random();

click = (Button) findViewById(R.id.bm);
click.setOnClickListener(new View.OnClickListener() 
    public void onClick(View click) 
        //choose one of four sound to play
        soundPool.play(sound[random.nextInt(4)], 1.0f, 1.0f, 0, 0, 1.0f);
    
);

【讨论】:

【参考方案2】:

如何将每个声音的引用放在一个数组中?然后您可以生成一个介于 0 和 array.length-1 之间的随机数并播放该声音。

【讨论】:

【参考方案3】:

假设你有 N 个声音片段

 int[] sounds=sound1, sound2,.........., soundN;

点击按钮让他们随机播放

 Random r = new Random();
 int start = 0;
 int end = N;
 int playRandom = r.nextInt(end-start) + start; 
 player = MediaPlayer.create(getApplicationContext(),sounds[playRandom]);
 player.start();

【讨论】:

以上是关于单击按钮时如何发出随机声音?的主要内容,如果未能解决你的问题,请参考以下文章

Android:按钮单击时的随机声音效果

addEventListener 单击时发出声音

单击另一个按钮 swift 2.2 更改声音按钮图像

按下一个按钮它会发出声音。快速点击按钮和声音播放弹出和点击

如何创建在单击时播放不同声音的按钮的 ListView

如何在我的应用程序中添加静音按钮?