xcode - 检查系统音量是否静音

标签 xcode macos cocoa swift audio

我目前正在开发一个小项目,在该项目中我需要检查应用程序委托(delegate)是否将系统音量静音。

声音与用户静音/取消静音的音量一样,需要调用函数。

我发现了一些关于 AudioToolbox 的信息,但我似乎找不到任何有效的东西。

最佳答案

我知道查看默认设备是否静音。首先,您需要查找“默认”音频设备硬件 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;
    }

不知道是否有办法在静音状态改变时收到通知。

关于xcode - 检查系统音量是否静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062592/

相关文章:

javascript - 单击事件监听器在 OSX 的 Safari 中有效,但在 iOS 中无效

git - git 似乎无法使用 OSX SSH key

objective-c - lldb 相当于 gdb 的 "follow-fork-mode"或 "detach-on-fork"

objective-c - 状态栏应用程序图像在运行时拉伸(stretch)。怎么修?

cocoa - 如何在 Cocoa 中创建垂直进度条?

ios - ld : library not found for -lAPDAdColonyAdapter

swift - 在 NSView 中显示控制台输出

windows - Linux Windows 之间的多任务、多线程有什么区别?

swift - 使用优化标志测试 SPM 包

iphone - 从 NSString 中删除前导和尾随的换行符