2014-04-28 10 views
5

Gibt es eine Möglichkeit, einen Listener für jedes Audiogerät einzurichten, um festzustellen, ob es entfernt oder entfernt wurde? Ich fand diese Post, die hilft, wenn Sie nur über integrierte Audio-verwandte Geräte Pflege:Wie erkennt man, wenn ein Audiogerät in CoreAudio getrennt wird?

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

Aber ich bin für eine universellere Lösung (das heißt alle Geräte, USB, HDMI, etc.). Und es ist OSX-spezifisch.

Irgendwelche Ideen, wie man das macht?

Antwort

6

Ich habe es herausgefunden! Man braucht nur einen Zuhörer an den entsprechenden AudioDeviceID hinzuzufügen (das Gerät, das Sie überwachen möchten):

// add listener for detecting when a device is removed 
const AudioObjectPropertyAddress alive_address = 
{ 
    kAudioDevicePropertyDeviceIsAlive, 
    kAudioObjectPropertyScopeGlobal, 
    kAudioObjectPropertyElementMaster 
}; 

AudioObjectAddPropertyListener(current_device_id_, &alive_address, deviceIsAliveCallback, &player_); 

Und dann die entsprechende Rückruf schreiben:

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

Hope this jemand hilft!

Verwandte Themen