为什么我的 SoundPool 静音?

发布于 2024-08-04 14:31:44 字数 466 浏览 10 评论 0原文

我设置了 SoundPool,并在 onCreate() 中加载声音资源:

soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
soundId = soundPool.load(this, R.raw.edible_underwear, 1);

然后我尝试在 onClick() 中播放此声音两次code>,一慢主要在左扬声器,一快主要在右扬声器:

soundPool.play(soundId, 0.9f, 0.1f, 0, -1, 0.7f);
soundPool.play(soundId, 0.1f, 0.1f, 0, -1, 1.5f);

听不到声音。我摆弄了数量、优先级和费率。至今无济于事。我错过了一些明显的东西吗?

I setup my SoundPool, and load a sound resource as this in onCreate():

soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
soundId = soundPool.load(this, R.raw.edible_underwear, 1);

And then I try to play this sound twice in a onClick(), one slow mostly in left speaker, and one fast mostly in the right speaker:

soundPool.play(soundId, 0.9f, 0.1f, 0, -1, 0.7f);
soundPool.play(soundId, 0.1f, 0.1f, 0, -1, 1.5f);

No sound can be heard. I have fiddled with the volumes, priorities and rates. So far to no avail. Am I missing something obvious?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后来的我们 2024-08-11 14:31:44

事实证明,SoundPool 有两个错误/限制。

  1. 音量范围为 0.0f 至 1.0f(不含 1.0f)。 1.0f 和 0.0f 都是静音,因此您必须将音量限制在 0.99f。
  2. 将不适合内存的样本加载到 SoundPool 中不会导致抛出异常,也不会返回可检查失败的 soundId。因此,您必须查看日志,并向 Android 之神祈祷您的示例适合目标设备。

Turns out that SoundPool have two bugs/restrictions.

  1. The sound volume is from 0.0f to but not inclusive 1.0f. Both 1.0f and 0.0f are mute, so you must cap your volume at 0.99f.
  2. Loading samples into the SoundPool that do not fit in ram will not result in an exception being thrown, nor is there a soundId returned that can be checked for failure. So you must look at your logs, and pray to the Android gods that your samples fit on the target device.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文