【发布时间】:2016-08-25 12:52:23
【问题描述】:
我找到this code 使用 Swift 设置系统音量。在操场上使用代码时,我收到了警告。
AudioHardwareServiceSetPropertyData 在 OS X 10.11 中已弃用
如何更新 OS X 10.11 的代码?
谢谢。 :)
【问题讨论】:
标签: swift volume osx-elcapitan
我找到this code 使用 Swift 设置系统音量。在操场上使用代码时,我收到了警告。
AudioHardwareServiceSetPropertyData 在 OS X 10.11 中已弃用
如何更新 OS X 10.11 的代码?
谢谢。 :)
【问题讨论】:
标签: swift volume osx-elcapitan
我还不能发表评论,因此我将其作为单独的答案发布。我已将出色的 ISSoundAdditions 更新为真正的 Swift 5,并为其提供了一个不错的公共接口,您可以通过该接口通过获取和设置 NSSound 的类属性来管理系统卷——示例:
NSSound.systemVolume += 0.2
NSSound.systemVolumeIsMuted = true
作为一个小礼物,您可以将系统音量静音(并且在后台不阻塞):
NSSound.systemVolumeFadeToMute(seconds: 5.0, blocking: false)
【讨论】:
正如 this answer 中对类似的 Objective-C 问题所建议的那样,我建议使用 ISSoundAdditions,您可以像这样从 Swift 中调用它:
NSSound.setSystemVolume(0.5)
ISSoundAdditions.m 中-setSystemVolume begins around line 113 的实现,以防您对它们如何完成设置系统音量感到好奇。
为了澄清对我的回答的一个有争议的评论(显然已删除),在使用 El Capitan SDK 进行编译时,在 ISSoundAdditions 中不使用已弃用的 API - 不使用 AudioHardwareServiceSetPropertyData。如果使用已弃用的AudioHardwareServiceSetPropertyData,AudioObjectSetPropertyData 确实是应该切换到的 API,尽管从我链接到的 ISSoundAdditions 实现中可以看出,涉及到一些工作(因此我首先链接到实现) .
【讨论】: