2014-04-28 15 views
5

Czy istnieje sposób skonfigurowania odbiornika dla dowolnego urządzenia audio w celu wykrycia, czy został on usunięty lub odłączony? Znalazłem ten post, który pomaga, jeśli tylko dbają o wbudowanych urządzeń związanych z dźwiękiem:Jak wykryć, kiedy urządzenie audio jest odłączone w CoreAudio?

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

ale szukam bardziej uniwersalnego rozwiązania (czyli wszystkich urządzeń, USB, HDMI, itd.). I jest to specyficzne dla OSX.

Wszelkie pomysły, jak to zrobić?

Odpowiedz

6

Wymyśliłem! One po prostu musi dodać detektor do odpowiedniego AudioDeviceID (urządzenie, które chcemy monitorować):

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

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

A potem napisać odpowiedni callback:

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

Hope this helps kogoś!

Powiązane problemy