在iOS

时间:2016-05-25 11:33:41

标签: c# xamarin.ios xamarin.forms

如何在iOS中获取和设置音量xamarin.forms?

我在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 个答案:

答案 0 :(得分:0)

指定音量你需要使用AVPlayer

 AVAudioSession.SharedInstance().SetCategory(AVAudioSessionCategory.Playback , AVAudioSessionCategoryOptions.MixWithOthers);

 var player = new AVPlayer(audioFilePath);
 player.Volume = 0.2f;  
 player.Play();

声级从0.0f到1f

More about AVPlayer

如果您需要上升或下降,只需添加值即可。你也可以看一下MPVolumeView 这是一个以编程方式更改音量的滑块

答案 1 :(得分:0)

我解决了这个问题(只获得当前的输出量):

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

第一条指令需要获取更新值,第二条指令返回0到1之间的浮点数,表示当前输出音量。

感谢这些参考:

输出量:Get System Volume iOS

更新值:How to get System Volume iOS?