Swift:设置 AVAudioSession 输出音量

Posted

技术标签:

【中文标题】Swift:设置 AVAudioSession 输出音量【英文标题】:Swift: Setting AVAudioSession Output Volume 【发布时间】:2015-02-19 21:50:55 【问题描述】:

有没有办法设置 AVAudiosession outputVolume?

    self.audioSession = AVAudioSession.sharedInstance()
    self.audioSession.setActive(true, error: nil)
    self.audioSession.addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.New, context: nil)
    self.audioSession.outputVolume

目前我可以访问 outputVolume,但我很难找到设置它的方法。

谢谢!

【问题讨论】:

【参考方案1】:

outputVolume 属性是只读的。这是因为 Apple 坚信,如果应用程序意外修改音量超出用户控制范围,那么良好的用户体验将会被破坏。

来自 AVAudioSession 文档:

系统范围的输出音量只能由用户直接设置;要在您的应用中提供音量控制,请使用 MPVolumeView 类

所以这是您唯一(简单)的选择...

  MPVolumeView *myVolumeView =
    [[MPVolumeView alloc] initWithFrame:frame];
    [self.view addSubview: myVolumeView];

【讨论】:

【参考方案2】:

我能够在 iOS 8 上使用以下内容更改主音量

#import <MediaPlayer/MediaPlayer.h>

[[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];
[[MPMusicPlayerController iPodMusicPlayer] setVolume:0.0];

关于信息,代码是通过 Cordova 插件调用的。这会影响主音量(调用代码时设备音量弹出窗口会显示新音量)

【讨论】:

以上是关于Swift:设置 AVAudioSession 输出音量的主要内容,如果未能解决你的问题,请参考以下文章

Swift实现iOS录音与播放音频功能

Swift:如何设置与其他人优雅混合的音频会话(又名 Pod)

Swift 中的 session.setPreferredInput?

设置 AVAudioSession 类别对来自 WKWebView 的声音没有影响

将关于录制麦克风信号的旧 swift 代码行翻译为 swift 4.2

将 AVAudioSession 模式设置为 AVAudioSessionModeVideoChat 时出现麦克风低语音录制问题