如何在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;
,但没有给我音量。
答案 0 :(得分:0)
指定音量你需要使用AVPlayer
AVAudioSession.SharedInstance().SetCategory(AVAudioSessionCategory.Playback , AVAudioSessionCategoryOptions.MixWithOthers);
var player = new AVPlayer(audioFilePath);
player.Volume = 0.2f;
player.Play();
声级从0.0f到1f
如果您需要上升或下降,只需添加值即可。你也可以看一下MPVolumeView 这是一个以编程方式更改音量的滑块
答案 1 :(得分:0)
我解决了这个问题(只获得当前的输出量):
AVAudioSession.SharedInstance().SetActive(true);
return AVAudioSession.SharedInstance().OutputVolume;
第一条指令需要获取更新值,第二条指令返回0到1之间的浮点数,表示当前输出音量。
感谢这些参考: