【问题标题】:Capture system volume changes in Swift在 Swift 中捕获系统音量变化
【发布时间】:2016-08-05 14:04:44
【问题描述】:

阅读以下关于在 osX 中获取和设置系统音量的建议,我使用了非常棒的 ISSoundAdditions:

Change Volume on Mac programmatically

Set OS X volume in OS X 10.11 using Swift without using the deprecated AudioHardwareServiceSetPropertyData API

我可以使用 NSSlider(带绑定)直接管理系统音量。 我的问题是:如何将音量变化捕获为一个事件(例如,当键盘上的音量增大和减小键时?在这些情况下,我的滑块没有反应。 我做了实验:

self.addObserver(self, forKeyPath: "volume.systemVolume", options: NSKeyValueObservingOptions.New, context: &volumeContext)

然后我得到一个异常:

无法为关键路径“volume.systemVolume”的观察者 XX 更新, 很可能是因为键“volume”的值已经改变了 正在发送适当的 KVO 通知。检查 KVO 合规性 类的。

顺便说一句,systemVolume 属性是一个类属性,如果重要的话?

非常感谢您的帮助

约书亚

【问题讨论】:

  • 嗨 joshua,你解决了捕获系统卷变化的问题吗?谢谢

标签: swift macos events volume


【解决方案1】:

我用过(Swift 4):

DistributedNotificationCenter.default.addObserver(self,
                                           selector: #selector(eventFunction(_:)),
                                           name: NSNotification.Name(rawValue: "com.apple.sound.settingsChangedNotification"),
                                           object: nil)

函数定义如下:

@objc func volumeChangeEvent(_ evt: NSEvent) { }

【讨论】:

  • 只有在实际系统声音设置应用打开时才有效。一旦它关闭并且我尝试使用键盘快捷键来提高/降低音量,它就不会检测到变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2016-03-18
  • 2012-07-09
  • 2010-10-17
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
相关资源
最近更新 更多