有没有办法为任何音频设备设置一个侦听器,以检测它是否已被删除或拔掉?如果您只关心内置音频相关设备,我发现这篇文章很有帮助:
How to get notifications when the headphones are plugged in/out? Mac
但我正在寻找更通用的解决方案(即所有设备,USB,HDMI等)。而且它是OSX特有的。
关于如何做到这一点的任何想法?
答案 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
}
希望这有助于某人!