检查系统音量是否静音

时间:2015-03-15 15:45:53

标签: xcode macos cocoa swift audio

我目前正在开展一个小项目,我需要检查系统音量是否与App Delegate静音。

声音与用户mute's/unmute's一样,需要调用一个函数。

我找到了一些关于AudioToolbox的内容,但我似乎找不到任何可行的内容。

1 个答案:

答案 0 :(得分:2)

我知道要查看默认设备是否静音。首先,您需要查找默认值'音频设备硬件ID。这可以完成一次并存储在您的程序中。

    var propAddr = AudioObjectPropertyAddress(
        mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDefaultOutputDevice),
        mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal),
        mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))

    var defaultAudioHardwareID : AudioDeviceID = 0
    var propSize = UInt32(sizeof(uint32))

    let status = AudioHardwareServiceGetPropertyData(AudioObjectID(kAudioObjectSystemObject), &propAddr, 0 , nil, &propSize, &defaultAudioHardwareID)

之后,您可以查看设备是否已静音。

    var propAddr = AudioObjectPropertyAddress(
        mSelector: AudioObjectPropertySelector(kAudioDevicePropertyMute),
        mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeOutput),
        mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))

    var isMuted: uint32 = 0
    var propSize = UInt32(sizeof(uint32))

    let status = AudioHardwareServiceGetPropertyData(defaultAudioHardwareID, &propAddr, 0, nil, &propSize, &isMuted)


    if isMuted != 0 {
        // Do stuff here
        return;
    }

我不知道是否有办法在静音状态发生变化时收到通知。