栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Swift中的AudioToolbox访问OS X主卷

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Swift中的AudioToolbox访问OS X主卷

(已为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.0var 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()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号