首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioSession应用程序卷与系统卷无关

AVAudioSession应用程序卷与系统卷无关
EN

Stack Overflow用户
提问于 2016-04-24 05:35:57
回答 1查看 855关注 0票数 3

我正在编写一个iOS应用程序(使用Xamarin),这是一个锻炼应用程序。很简单真的。你启动iTunes,在后台播放一些音乐,这个应用程序在锻炼的不同部分有周期性的语音提示。这是一个基本的HIIT/Tabata计时器。

当声音提示时,我使用AVAudioSession来隐藏背景音频,并且它按预期工作。但是,我希望用户能够通过设置来设置语音提示的音量级别。我以为这就像在AVAudioSession上设置音量级别一样简单,但很快就发现它是只读的。

我不想改变系统音量。我只想设置我的应用程序的音频的音量,不依赖于系统的音量级别。这是可能的。我之所以知道这一点,是因为我面前有一款应用程序,可以完成这个任务。我唯一的问题是,我不知道如何在我的AVAudioSession应用程序中设置音频音量。

那么,有谁知道如何独立于系统音量级别来设置应用程序发出的音频的音量级别呢?

下面是用于包装调用以激活和停用AVAudioSession的代码:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-24 12:31:14

正如您所说的,AVAudioSession具有只读卷属性,但具有:

AudioPlayer您可以将卷从0.0静默设置为1.0 max https://developer.xamarin.com/api/property/AVFoundation.AVAudioPlayer.Volume/,如下所示:

代码语言:javascript
复制
        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/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36819663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档