如何使用 Core Audio 设置/获取音量级别?
Posted
技术标签:
【中文标题】如何使用 Core Audio 设置/获取音量级别?【英文标题】:How do I set/get the volume level with Core Audio? 【发布时间】:2012-11-04 15:23:58 【问题描述】:我希望能够使用 Core Audio 获取和设置系统音量。我已经遵循了另一个线程上的代码: objective c audio meter
但是,我调用 AudioHardwareServiceHasProperty
以查找 kAudioHardwareServiceDeviceProperty_VirtualMasterVolume
属性返回 false。为什么会发生这种情况,我该如何解决?我应该采取什么方法来获取和设置 Core Audio 的系统音量?
【问题讨论】:
【参考方案1】:您是否尝试过 kAudioDevicePropertyVolumeScalar:
UInt32 channel = 1; // Channel 0 is master, if available
AudioObjectPropertyAddress prop =
kAudioDevicePropertyVolumeScalar,
kAudioDevicePropertyScopeOutput,
channel
;
if(!AudioObjectHasProperty(deviceID, &prop))
// error
Float32 volume;
UInt32 dataSize = sizeof(volume);
OSStatus result = AudioObjectGetPropertyData(deviceID, &prop, 0, NULL, &dataSize, &volume);
if(kAudioHardwareNoError != result)
// error
【讨论】:
以上是关于如何使用 Core Audio 设置/获取音量级别?的主要内容,如果未能解决你的问题,请参考以下文章
Core Audio(音频单元)音频会话和 MPVolumeView