独立于系统音量的 AVAudioSession 应用程序音量
AVAudioSession App Volume Independent of System Volume
我正在编写一个 iOS 应用程序(使用 Xamarin),它是一个锻炼应用程序。真的很简单。你启动 iTunes,在后台播放一些音乐,这个应用程序在锻炼的不同部分有周期性的语音提示。这是一个基本的 HIIT/Tabata 计时器。
我正在使用 AVAudioSession
在语音提示时隐藏背景音频,它按预期工作。但是,我希望用户能够通过设置设置语音提示的音量级别。我认为这就像在 AVAudioSession
上设置音量级别一样简单,但很快发现它是只读的。
我不想更改系统音量。 我只想设置应用程序音频的音量,与系统音量级别无关。这是可能的。我知道这一点,因为我面前有一个应用程序可以做这件事。我唯一的问题是,我不知道如何在我的 AVAudioSession
中设置我的应用程序中的音频音量。
那么,有谁知道如何独立于系统音量设置应用发出的音频的音量吗?
下面是我用来激活和停用 AVAudioSession
的调用的代码:
private void ActivateAudioSession()
{
var session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.Playback, AVAudioSessionCategoryOptions.DuckOthers);
session.SetActive(true);
}
private void DeactivateAudioSession()
{
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
var session = AVAudioSession.SharedInstance();
session.SetActive(false);
})).Start();
}
正如您所说,AVAudioSession
具有只读卷 属性,但具有:
AudioPlayer
您可以将音量从 0.0
无声设置为 1.0
最大 https://developer.xamarin.com/api/property/AVFoundation.AVAudioPlayer.Volume/,如下所示:
string path = NSBundle.PathForResourceAbsolute ("audiofile", "mp3", NSBundle.MainBundle.ResourcePath);
var url = NSUrl.FromFilename (path);
var audioPlayer = AVAudioPlayer.FromUrl (url);
audioPlayer.Volume = 0.5f;
audioPlayer.Play ();
或者您可以使用 MPMusicPlayerController
但我认为它只能播放音乐 https://developer.xamarin.com/api/property/MonoTouch.MediaPlayer.MPMusicPlayerController.Volume/
我正在编写一个 iOS 应用程序(使用 Xamarin),它是一个锻炼应用程序。真的很简单。你启动 iTunes,在后台播放一些音乐,这个应用程序在锻炼的不同部分有周期性的语音提示。这是一个基本的 HIIT/Tabata 计时器。
我正在使用 AVAudioSession
在语音提示时隐藏背景音频,它按预期工作。但是,我希望用户能够通过设置设置语音提示的音量级别。我认为这就像在 AVAudioSession
上设置音量级别一样简单,但很快发现它是只读的。
我不想更改系统音量。 我只想设置应用程序音频的音量,与系统音量级别无关。这是可能的。我知道这一点,因为我面前有一个应用程序可以做这件事。我唯一的问题是,我不知道如何在我的 AVAudioSession
中设置我的应用程序中的音频音量。
那么,有谁知道如何独立于系统音量设置应用发出的音频的音量吗?
下面是我用来激活和停用 AVAudioSession
的调用的代码:
private void ActivateAudioSession()
{
var session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.Playback, AVAudioSessionCategoryOptions.DuckOthers);
session.SetActive(true);
}
private void DeactivateAudioSession()
{
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
var session = AVAudioSession.SharedInstance();
session.SetActive(false);
})).Start();
}
AVAudioSession
具有只读卷 属性,但具有:
AudioPlayer
您可以将音量从 0.0
无声设置为 1.0
最大 https://developer.xamarin.com/api/property/AVFoundation.AVAudioPlayer.Volume/,如下所示:
string path = NSBundle.PathForResourceAbsolute ("audiofile", "mp3", NSBundle.MainBundle.ResourcePath);
var url = NSUrl.FromFilename (path);
var audioPlayer = AVAudioPlayer.FromUrl (url);
audioPlayer.Volume = 0.5f;
audioPlayer.Play ();
或者您可以使用 MPMusicPlayerController
但我认为它只能播放音乐 https://developer.xamarin.com/api/property/MonoTouch.MediaPlayer.MPMusicPlayerController.Volume/