gpt4 book ai didi

android - SoundPool 中的流音量与 AudioManager 中的音量

转载 作者:IT王子 更新时间:2023-10-28 23:37:05 26 4
gpt4 key购买 nike

我很困惑……

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 将 Activity 音量设置为 0.5 - 播放声音
  3. 将 soundpool.play 中的音量设置为 1 - 播放声音,声音会大两倍

有人能解释一下为什么会这样吗?传递给 SoundPool.play 方法的音量真的是全局音量的乘数吗?

最佳答案

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

关于android - SoundPool 中的流音量与 AudioManager 中的音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com