如何在CoreAudio中检测音频设备何时断开连接



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

如何在耳机插入/拔出时获得通知?Mac

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

有什么想法吗?

我想通了!只需在适当的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
}

希望这能帮助到别人!

最新更新