如何使用 SoundPool 播放随机声音?

Posted

技术标签:

【中文标题】如何使用 SoundPool 播放随机声音?【英文标题】:How to play a random sound using SoundPool? 【发布时间】:2016-04-04 02:46:47 【问题描述】:

How to make Random sound when button click?

我对编程世界很陌生,我之前检查过上面的链接,尝试将其用作播放随机声音的参考。我正在使用 SoundPool,因为我知道它在播放短片方面比 MediaPlayer 更好。我总共有四种声音。

当我运行我的应用程序时,我收到一条错误消息,说不幸的是它已停止。

关于什么可能是错误的任何想法?

这是我的代码:

import java.util.Random;

public class actibida extends AppCompatActivity 
SoundPool soundPool;
Button button;

protected void onCreate(Bundle savedInstanceState) 

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_actibida);

    final int[] sound = new int[4];
    sound[0] = soundPool.load(actibida.this, R.raw.el, 1);
    sound[1] = soundPool.load(actibida.this, R.raw.guau, 1);
    sound[2] = soundPool.load(actibida.this, R.raw.miau, 1);
    sound[3] = soundPool.load(actibida.this, R.raw.quack, 1);

    final Random r = new Random();

    button = (Button) this.findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() 

        public void onClick(View button) 
            soundPool.play(sound[r.nextInt(4)], 1.0f, 1.0f, 0, 0, 1.0f);
        

    );

【问题讨论】:

【参考方案1】:

您实际上还没有创建一个 SoundPool 实例来使用。在调用 soundPool.load 之前,您必须使用 the SoundPool constructor(或 Builder API)创建一个定义 SoundPool 某些属性的实例。

【讨论】:

非常感谢!那真是个愚蠢的错误。问题解决了。 很高兴为您提供帮助。请不要忘记接受这个答案作为正确答案。

以上是关于如何使用 SoundPool 播放随机声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SoundPool 播放超过 32 种声音?

Android 编程 - 如何从广播接收器播放 SoundPool 声音?

如何在特定时间段内使用 SoundPool 同时播放声音

如何使用 Android 动画播放“滴答滴答”声音(可能使用“Android MediaPlayer / SoundPool”)?

SoundPool 项目在触发时随机播放/不播放

如何停止通过 Soundpool 播放声音?