AudioManager setStreamVolume 没有标志

Dar*_*att 7 android android-audiomanager

Android AudioManager有方法 public void setStreamVolume (int streamType, int index, int flags)。

我不想使用任何标志,因为它们都用于启用反馈。我不想要振动、UI 弹出窗口或任何类型的提示。我不想取消当前正在播放的铃声。我只想设置流音量,我该怎么做?

如果我在播放铃声时更改音量,铃声的音量会受到影响还是只会影响以后的铃声?

这是我能找到的关于该主题的最接近的帖子,但它没有回答这个问题:标志参数意味着什么以及机器人设备可能的最小值和最大值的范围

Dar*_*att 7

要不设置任何标志,请将整数传递0给 flags 参数。

科特林示例:

val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, volume, 0)
Run Code Online (Sandbox Code Playgroud)


可能的标志包括(来源):

FLAG_SHOW_UI                  = 1 << 0;
FLAG_ALLOW_RINGER_MODES       = 1 << 1;
FLAG_PLAY_SOUND               = 1 << 2;
FLAG_REMOVE_SOUND_AND_VIBRATE = 1 << 3;
FLAG_VIBRATE                  = 1 << 4;
FLAG_FIXED_VOLUME             = 1 << 5;
FLAG_BLUETOOTH_ABS_VOLUME     = 1 << 6;
FLAG_SHOW_SILENT_HINT         = 1 << 7;
FLAG_HDMI_SYSTEM_AUDIO_VOLUME = 1 << 8;
FLAG_ACTIVE_MEDIA_ONLY        = 1 << 9;
FLAG_SHOW_UI_WARNINGS         = 1 << 10;
FLAG_SHOW_VIBRATE_HINT        = 1 << 11;
FLAG_FROM_KEY                 = 1 << 12;
Run Code Online (Sandbox Code Playgroud)

这种模式表明整数中的每一位代表一个不同的标志。这(通过测试确认)意味着0作为flags参数传递到setStreamVolume代表没有设置标志。