Я пробовал разные решения, чтобы установить постоянную громкость звука в приложении, но, похоже, он меняется в зависимости от громкости системы. Мне нужна постоянная громкость звука в приложении, независимо от настроек громкости системы пользователя.
Моей первой попыткой было установить attributes
следующим образом
_player = MediaPlayer.Create(_Act, Resource.Raw.emoji_pop);
var _attr = new AudioAttributes.Builder()
.SetContentType(AudioContentType.Sonification)
.SetUsage(AudioUsageKind.NotificationEvent).Build();
_player.SetAudioAttributes(_attr);
_player.Start();
При этом воспроизводятся звуки, но В зависимости от системной громкости, я пытался установить громкость на 10
, когда Макс. 100
, как указано ниже
private static int MAX_VOLUME = 100;
public void setVolume(int soundVolume)
{
float volume = (float)(1 - (Math.Log(MAX_VOLUME - soundVolume) / Math.Log(MAX_VOLUME)));
_player.SetVolume(volume, volume);
}
Это уменьшает громкость, но опять же зависит от громкости системы. Насколько я понимаю, установка .SetContentType(AudioContentType.Sonification)
и .SetUsage(AudioUsageKind.NotificationEvent)
должны сделать галочку, но это не так.
Я также попытался установить громкость на AudioManager
следующим образом
AudioManager volumeControl = (AudioManager) GetSystemService(Context.AudioService);
volumeControl.SetStreamVolume(Android.Media.Stream.System, 10, VolumeNotificationFlags.PlaySound);
Это не тоже не работает. Можно ли как-нибудь воспроизвести звук, игнорируя громкость системы и не прерывая любой другой воспроизводимый в данный момент звук?