我希望能够使用Core Audio获取和设置系统音量级别。我已经按照其他线程上的代码: objective c audio meter
但是,我调用AudioHardwareServiceHasProperty
来查找kAudioHardwareServiceDeviceProperty_VirtualMasterVolume
属性会返回false。为什么会发生这种情况,我该如何解决这个问题?我应该采用什么方法来获取和设置Core Audio的系统音量?
答案 0 :(得分:3)
您是否尝试过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