SoundPool中的流量与AudioManager中的音量

时间:2010-11-15 02:23:09

标签: android soundpool android-audiomanager

我很困惑......

SoundPool.play(int soundID, float leftVolume,float rightVolume ,int priority,int loop,float rate)

这里的体积是0.0到1.0

教程我见过建议将流量计算为:

AudioManager mgr = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);

int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);

streamVolume = streamVolume / AudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f);

这是有道理的。

我认为此卷会覆盖用户在手机中设置的全局媒体音量,我可以通过更改soundPool中的流量来独立更改我的应用的音量。

但实际上它的作用就像乘数一样 - 如果我在soundpool中设置0.5音量,实际音量将始终是全局音量的一半。很容易重现:

  1. 设置全局媒体量 手机设置为最大
  2. 使用soundpool.play将活动中的音量设置为0.5 - 播放声音
  3. 将soundpool.play中的音量设置为1 - 播放声音,它将是两倍声音
  4. 有人可以解释为什么会这样吗?是传递给SoundPool.play方法的卷真的是全局卷的乘数吗?

1 个答案:

答案 0 :(得分:27)

是的,音量参数与全局音量有关。如果您想以当前音量设置播放声音,只需将“1”作为音量。