/// <summary> /// Changes the Audio Volume in the Audio Mixer. /// </summary> /// <param name="audioVolType">The type of AudioSource that the volume wanted to changes</param> /// <param name="volume">Between 0 - 1</param> public void SetVolume(AudioVolumeType audioVolType, float volume) { string audioType = null; float maxVolume = 80f; switch (audioVolType) { case AudioVolumeType.Master: audioType = MASTER_VOLUME; maxVolume = MAX_MASTER_VOLUME; break; case AudioVolumeType.BGM: audioType = BGM_VOLUME; maxVolume = MAX_BGM_VOLUME; break; case AudioVolumeType.SFX: audioType = SFX_VOLUME; maxVolume = MAX_SFX_VOLUME; break; } float volAdjusted = Mathf.Clamp01(volume); volAdjusted = ((volAdjusted * maxVolume) - 80); //karena min di audio mixer -80 audionya mati, 0 audionya normal, dan 20 audionya boosted (itungan desibles) if (audioType != null && AudioMixer != null) { AudioMixer.SetFloat(audioType, volAdjusted); } }
/// <summary> /// Mutes or Unmutes the sound, depending on bool Is__On. Don't have to call this, just set the Is__On variable. /// </summary> /// <param name="audioType">The type of AudioSource that the volume wanted to changes</param> public void MuteUnMuteSound(AudioVolumeType audioType) { if (audioType == AudioVolumeType.SFX) { SetVolume(AudioVolumeType.SFX, IsSFXOn == true ? 1 : 0); } else if (audioType == AudioVolumeType.BGM) { SetVolume(AudioVolumeType.BGM, IsBGMOn == true ? 1 : 0); } else if (audioType == AudioVolumeType.Master) { SetVolume(AudioVolumeType.Master, IsMasterOn == true ? 1 : 0); } }
/// <summary> /// Gets the max volume level of the specified <see cref="AudioVolumeType"/>. /// </summary> /// <param name="type">The <see cref="AudioVolumeType"/> to query.</param> /// <value>The maximum volume level.</value> /// <exception cref="ArgumentException"><paramref name="type"/> is invalid.</exception> /// <exception cref="ArgumentOutOfRangeException"><paramref name="type"/> is <see cref="AudioVolumeType.None"/>.</exception> /// <since_tizen> 3 </since_tizen> public int this[AudioVolumeType type] { get { ValidationUtil.ValidateEnum(typeof(AudioVolumeType), type, nameof(type)); if (type == AudioVolumeType.None) { throw new ArgumentOutOfRangeException(nameof(type), "Cannot get max volume level for AudioVolumeType.None"); } Interop.AudioVolume.GetMaxVolume(type, out var maxVolume). Validate("Failed to get the max volume level"); return(maxVolume); } }
/// <summary> /// Gets or sets the volume level of the specified <see cref="AudioVolumeType"/>. /// </summary> /// <param name="type">The <see cref="AudioVolumeType"/> to control.</param> /// <value>The current volume level.</value> /// <remarks>To set volumes, the specified privilege is required.</remarks> /// <privilege>http://tizen.org/privilege/volume.set</privilege> /// <exception cref="ArgumentException"><paramref name="type"/> is invalid.</exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="type"/> is <see cref="AudioVolumeType.None"/>.<br/> /// -or-<br/> /// <paramref name="value"/> is less than zero.<br/> /// -or-<br/> /// <paramref name="value"/> is greater than <see cref="MaxVolumeLevel.this[AudioVolumeType]"/>. /// </exception> /// <exception cref="UnauthorizedAccessException">The caller does not have required privilege to set volume.</exception> /// <since_tizen> 3 </since_tizen> public int this[AudioVolumeType type] { get { ValidationUtil.ValidateEnum(typeof(AudioVolumeType), type, nameof(type)); if (type == AudioVolumeType.None) { throw new ArgumentOutOfRangeException(nameof(type), "Cannot get volume level for AudioVolumeType.None"); } Interop.AudioVolume.GetVolume(type, out var volume).ThrowIfError("Failed to get the volume level"); return(volume); } set { ValidationUtil.ValidateEnum(typeof(AudioVolumeType), type, nameof(value)); if (type == AudioVolumeType.None) { throw new ArgumentOutOfRangeException(nameof(type), "Cannot set volume level for AudioVolumeType.None"); } var ret = Interop.AudioVolume.SetVolume(type, value); if (ret == AudioManagerError.InvalidParameter) { throw new ArgumentOutOfRangeException(nameof(value), value, $"valid volume level range is 0 <= x <= {nameof(MaxVolumeLevel)}[{nameof(AudioVolumeType)}]"); } ret.ThrowIfError("Failed to set the volume level"); } }
internal static extern AudioManagerError GetSoundType(AudioStreamPolicyHandle streamInfo, out AudioVolumeType soundType);
internal static extern AudioManagerError GetCurrentSoundType(out AudioVolumeType type);
internal static extern AudioManagerError GetVolume(AudioVolumeType type, out int volume);
internal static extern AudioManagerError GetMaxVolume(AudioVolumeType type, out int max);
internal VolumeChangedEventArgs(AudioVolumeType type, uint level) { Type = type; Level = (int)level; }