Получить и установить громкость на iOS

Как получить и установить том в Xamarin iOS.формы?

Я написал сервис dependacy в android, который устанавливает и получает объем музыкального потока на android.

Я хочу иметь ползунок с текущим объемом, заданным по умолчанию, и выделить пользователя, чтобы установить громкость, сдвинув ползунок. Также я хотел бы получить максимально допустимый уровень громкости для установки максимального предела слайдера.

Вот как я сделал в android, и отлично работает на устройстве andriod:

public int MaxVolume()
{
    AudioManager audioMan = (AudioManager)global::Android.App.Application.Context.GetSystemService(Context.AudioService);
    return audioMan.GetStreamMaxVolume(Android.Media.Stream.Music);
}

public void SetVolume(int volume)
{
    AudioManager audioMan = (AudioManager)global::Android.App.Application.Context.GetSystemService(Context.AudioService);
    audioMan.SetStreamVolume(Android.Media.Stream.Music, volume, 0);
}

public int GetCurrentVolume()
{
    AudioManager audioMan = (AudioManager)global::Android.App.Application.Context.GetSystemService(Context.AudioService);
    return audioMan.GetStreamVolume(Android.Media.Stream.Music);
}

Как добиться того же на iOS? Я пыталсяfloat volume = AVAudioSession.SharedInstance().OutputVolume;, но не дает мне объем.

2 ответа

  1. Для указания объема u необходимо использовать AVPlayer

     AVAudioSession.SharedInstance().SetCategory(AVAudioSessionCategory.Playback , AVAudioSessionCategoryOptions.MixWithOthers);
    
     var player = new AVPlayer(audioFilePath);
     player.Volume = 0.2f;  
     player.Play();
    

    Где уровень звука от 0.0 f до 1f

    Подробнее о AVPlayer

    Если вам нужно поднять или понизить его, просто добавьте значение. Также вы можете посмотреть на MPVolumeView
    Это ползунок, который изменяет том программно

  2. Я решил это, как это (получить текущий выходной объем только):

    AVAudioSession.SharedInstance().SetActive(true);
    return AVAudioSession.SharedInstance().OutputVolume;
    

    Первая инструкция необходима для получения обновленных значений, вторая возвращает значение с плавающей запятой между 0 и 1, указывающее текущий выходной объем.

    Благодаря этим ссылкам:

    выходной объем: получить системный объем iOS

    обновите значение: как получить системный том iOS?