Android - Регулятор громкости MediaPlayer независимо от настроек громкости системы - PullRequest
0 голосов
/ 28 февраля 2020

Я пробовал разные решения, чтобы установить постоянную громкость звука в приложении, но, похоже, он меняется в зависимости от громкости системы. Мне нужна постоянная громкость звука в приложении, независимо от настроек громкости системы пользователя.

Моей первой попыткой было установить 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);

Это не тоже не работает. Можно ли как-нибудь воспроизвести звук, игнорируя громкость системы и не прерывая любой другой воспроизводимый в данный момент звук?

...