我很困惑......
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音量,实际音量将始终是全局音量的一半。很容易重现:
有人可以解释为什么会这样吗?是传递给SoundPool.play方法的卷真的是全局卷的乘数吗?
答案 0 :(得分:27)
是的,音量参数与全局音量有关。如果您想以当前音量设置播放声音,只需将“1”作为音量。