有没有从我的Swift应用程序中设置系统主音量的解决方案?
我阅读了很多有关AudioToolbox的内容,并阅读了Objective-C中的一些源示例。
但是我无法在Swift中使用它。
我在https://developer.apple.com/library/mac/documentation/AudioToolbox/Reference/AudioHardwareServicesReference/index.html#//apple_ref/c/func/AudioHardwareServiceGetPropertyData中缺少一些示例代码
(已为Swift 4和更高版本更新了代码,可以在编辑历史记录中找到Swift 2和3版本。)
这是从将 10.6(雪豹)以编程方 转换为OSX系统卷并以编程方式将Mac OSX卷设置为Swift(为简洁起见,省略错误检查)的答案得到的:
所需框架:
import AudioToolbox
获取默认输出设备:
var defaultOutputDeviceID = AudioDeviceID(0)
var defaultOutputDeviceIDSize = UInt32(MemoryLayout.size(ofValue: defaultOutputDeviceID))
var getDefaultOutputDevicePropertyAddress = AudioObjectPropertyAddress(
mSelector: kAudioHardwarePropertyDefaultOutputDevice,
mScope: kAudioObjectPropertyScopeGlobal,
mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))
let status1 = AudioObjectGetPropertyData(
AudioObjectID(kAudioObjectSystemObject),
&getDefaultOutputDevicePropertyAddress,
0,
nil,
&defaultOutputDeviceIDSize,
&defaultOutputDeviceID)
设定音量:
var volume = Float32(0.50) // 0.0 ... 1.0
var volumeSize = UInt32(MemoryLayout.size(ofValue: volume))
var volumePropertyAddress = AudioObjectPropertyAddress(
mSelector: kAudioHardwareServiceDeviceProperty_VirtualMasterVolume,
mScope: kAudioDevicePropertyScopeOutput,
mElement: kAudioObjectPropertyElementMaster)
let status2 = AudioObjectSetPropertyData(
defaultOutputDeviceID,
&volumePropertyAddress,
0,
nil,
volumeSize,
&volume)
最后,为了完整起见,请获取以下内容:
var volume = Float32(0.0)
var volumeSize = UInt32(MemoryLayout.size(ofValue: volume))
var volumePropertyAddress = AudioObjectPropertyAddress(
mSelector: kAudioHardwareServiceDeviceProperty_VirtualMasterVolume,
mScope: kAudioDevicePropertyScopeOutput,
mElement: kAudioObjectPropertyElementMaster)
let status3 = AudioObjectGetPropertyData(
defaultOutputDeviceID,
&volumePropertyAddress,
0,
nil,
&volumeSize,
&volume)
print(volume)
为简便起见,已省略了错误检查。当然,应该在实际应用程序中检查状态返回值是否成功。
积分去 设置OS X量OS X 10.11雨燕采用不使用过时的AudioHardwareServiceSetPropertyDataAPI 的使用AudioObjectSetPropertyData()
,而不是过时的AudioHardwareServiceSetPropertyData()
。
正如noamtm在评论中提到的那样,这也可以通过传递以下内容来获取和设置左右平衡
mSelector: kAudioHardwareServiceDeviceProperty_VirtualMasterBalance
到AudioObjectPropertyAddress()
。
我正在尝试使用Gulp从主目录复制所选文件,但以下操作无法完成此操作: 什么是正确的设置为使其工作?文档对此非常简洁。
在以前版本的OS X中,要允许运行AppleScript,需要在系统首选项的可访问性窗格中选中“启用辅助设备的访问”。 对于Mavericks,现在这是一个从安全启用的每个应用程序设置 我还尝试将所有应用程序添加到权限对话框中,但仍然收到权限拒绝错误。
我有一个类似的问题,如何访问外部的领事UI,但我不能使网络选项的组合工作正确。 我在OSX上使用的是Docker for Mac,而不是老的Docker机器,也使用了官方的Consuler Docker镜像,而不是Progrium/Docker镜像。 我可以使用以下方法启动一个3节点服务器集群 到目前为止还不错,他们互相联系,工作很好。现在我想启动一个代理,并通过它查看UI。 我尝试了一堆-cli
要限制对代码块的访问,模块和抽象是通过访问控制完成的。 可以根据访问控制机制的属性,方法,初始化程序和下标来访问类,结构和枚举。 协议中的常量,变量和函数受到限制,并允许通过访问控制作为全局和局部访问。 应用于属性,类型和功能的访问控制可称为“实体”。 访问控制模型基于模块和源文件。 模块被定义为单个代码分发单元,使用关键字导入。源文件定义为单个源代码文件,在模块中用于访问多种类型和功能。 Swi
访问控制可以限定其他源文件或模块中代码对你代码的访问级别。 你可以明确地给单个类型(类、结构体、枚举)设置访问级别,也可以给这些类型的属性、函数、初始化方法、基本类型、下标索引等设置访问级别。 协议也可以被限定在一定的范围内使用,包括协议里的全局常量、变量和函数。 访问控制基于模块与源文件。 模块指的是以独立单元构建和发布的 Framework 或 Application。在 Swift 中的一个
问题内容: 我试图在Swift中访问temp目录。在Objective-C中,我可以使用以下代码进行操作: 但是,对于将类型从Objective-C转换为Swift 或从Swift转换为类型,我有些困惑 。我应该查看任何文件吗? 谢谢。 问题答案: 怎么样: 它没有回答您有关char *的问题,但它更干净… NSFileManager参考在这里。