如何检测CoreAudio中何时断开音频设备?

时间:2014-04-28 20:40:31

标签: macos core-audio device

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

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

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

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

1 个答案:

答案 0 :(得分:6)

我明白了!只需要将一个监听器添加到相应的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
}

希望这有助于某人!