【问题标题】:How to detect when an Audio Device is disconnected in CoreAudio?如何在 CoreAudio 中检测音频设备何时断开连接?
【发布时间】:2014-04-28 20:40:31
【问题描述】:

有没有办法为任何音频设备设置监听器以检测它是否已被移除或拔出?如果您只关心内置音频相关设备,我发现这篇文章会有所帮助:

How to get notifications when the headphones are plugged in/out? Mac

但我正在寻找更通用的解决方案(即所有设备、USB、HDMI 等)。它是特定于 OSX 的。

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: macos core-audio device


    【解决方案1】:

    我想通了!只需将侦听器添加到适当的 AudioDeviceID(您要监控的设备):

    // add listener for detecting when a device is removed
    const AudioObjectPropertyAddress alive_address =
    {
      kAudioDevicePropertyDeviceIsAlive,
      kAudioObjectPropertyScopeGlobal,
      kAudioObjectPropertyElementMaster
    };
    
    AudioObjectAddPropertyListener(current_device_id_, &alive_address, deviceIsAliveCallback, &player_);
    

    然后编写相应的回调:

    OSStatus deviceIsAliveCallback(AudioObjectID                       inObjectID,
                               UInt32                              inNumberAddresses,
                               const AudioObjectPropertyAddress    inAddresses[],
                               void*                               inClientData)
    {
      // your code here
    }
    

    希望这对某人有所帮助!

    【讨论】:

    • 设备连接监听器呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多