【问题标题】:Why is my SoundPool mute?为什么我的 SoundPool 静音?
【发布时间】:2010-11-26 13:15:47
【问题描述】:

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

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

然后我尝试在onClick() 中播放此声音两次,一次慢速,大部分在左扬声器,一次快,大部分在右扬声器:

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

听不到声音。我已经摆弄了数量、优先级和费率。到目前为止无济于事。我错过了什么明显的东西吗?

【问题讨论】:

  • 你在玩什么?也许您需要一个 MediaPlayer 的实例,例如MediaPlayer mp = new MediaPlayer();
  • R.raw.edible_underwear .... 有趣

标签: android audio soundpool


【解决方案1】:

原来SoundPool 有两个错误/限制。

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

【讨论】:

  • 我怀疑你的第一点是我遇到的问题!很高兴有人想通了。为什么 API 会使用 0.0 1.0 作为静音?!!
  • 因为如果你退后一步把 Android 作为一个整体来看,那么 Android 就是一团乱麻。很明显,每个开发者都遵循自己的设计标准,如果它编译+工作,那就足够了。
  • 我们因为这样的错误而浪费了宝贵的开发时间!我无法相信这会导致我出现如此多的声音错误。感谢 Peylow 提供此信息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多