Skip to content

getVolumeFactor

获取音量缩放因子

getVolumeFactor()SUDRTGameAudioSession 接口中的一个同步查询方法。它用于获取当前小游戏引擎输出的音量比例(缩放因子)。该值决定了游戏内部音频在当前系统媒体音量基础上的实际输出强度。


方法声明

java
/**
 * 获取当前游戏音频的音量缩放因子。
 * @return float 返回一个 0.0 到 1.0 之间的浮点数。
 * 0.0 表示无声(等同于静音),1.0 表示满额输出(100%)。
 */
float getVolumeFactor();

运行行为

  1. 线性缩放:返回的是一个相对比例。最终用户听到的声音大小 = 系统媒体音量 × VolumeFactor
  2. 独立控制:该方法允许 App 在不改变手机物理按键音量的情况下,单独调低或调高游戏的背景音。
  3. 实时状态:如果之前调用过 setVolumeFactor(0.5f),该方法将立即返回 0.5

代码示例

在 App 的音量控制滑块(Slider)初始化时同步数值:

java
// 1. 从游戏句柄获取音频会话
SUDRTGameAudioSession audioSession = mGameHandle.getAudioSession();

// 2. 获取当前的音量因子(例如 0.8f)
float currentFactor = audioSession.getVolumeFactor();

// 3. 将其映射到进度条(假设进度条范围是 0-100)
int progress = (int)(currentFactor * 100);
volumeSeekBar.setProgress(progress);

Log.d("SudAudio", "当前游戏音量百分比: " + progress + "%");

注意事项

  • 与系统音量的区别:如果手机系统音量本身被调到了 0,即使 getVolumeFactor() 返回 1.0,用户依然听不到声音。
  • 与静音状态的关系getVolumeFactor() 返回 0.0 在效果上等同于 isMute() 返回 true,但它们是两个独立的逻辑控制位。
  • 精度建议:虽然返回的是 float,但通常建议 App 侧将其映射为百分比(0-100)进行 UI 展示,以符合用户的操作习惯。