没有标志的 AudioManager setStreamVolume

AudioManager setStreamVolume without flags

AndroidAudioManager有方法 public void setStreamVolume (int streamType, int index, int flags).

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

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

这是我能找到的最接近主题的 post,但它没有回答问题:What do the the flag parameter means and range of possible min and max of droid device

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

Kotlin 示例:

val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, volume, 0)


可能的标志包括 (source):

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;

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