2014-04-28 43 views
5

Kaldırılmış veya takılı olup olmadığını algılamak için herhangi bir Ses Aygıtı için bir dinleyici ayarlamanın bir yolu var mı? Ben sadece dahili ses ilgili cihazlar hakkında bakım yardımcı bu yazı bulundu:CoreAudio'da bir Ses Aygıtı bağlantısı kesildiğinde nasıl algılanır?

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

Ama daha evrensel çözeltide (tüm cihazlar, vb USB, HDMI,) arıyorum. Ve bu OSX'e özgü.

Bunu nasıl yapacağınıza dair herhangi bir fikir var mı?

cevap

6

Bunu çözdüm!

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

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

Ve ardından ilgili geri arama yazma: Birtanesi uygun AudioDeviceID (cihaz izlemek isteyen) için bir dinleyici eklemek gerekiyor bu kimse yardımcı olur

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

Umut!