Detecta el evento enchufado y desenchufado en la toma de auriculares en Xamarin.iOS (iOS 7)

Estoy tratando de encontrar una manera de detectar el evento enchufado / desenchufado en los auriculares Jack en Xamarin.iOS, específicamente en la última versión (iOS 7). Encontré publicaciones que dan solución a versiones anteriores, pero parece que eso no funciona para iOS 7. ¿Hay alguna forma de hacerlo en esta versión? y si es así, ¿cómo puedo implementar esa funcionalidad?

Algo como esto:

using System.Runtime.InteropServices; using MonoTouch.AudioToolbox; ... public override void ViewDidLoad () { base.ViewDidLoad (); AudioSession.AddListener(AudioSessionProperty.AudioRouteChange, EventHandler); } void EventHandler(AudioSessionProperty prop, int size, IntPtr data) { var isHeadphonesAvailable = IsHeadphonesAvailable (prop, size, data); if (isHeadphonesAvailable) { // Do something } else { // Do something else } } bool IsHeadphonesAvailable(AudioSessionProperty prop, int size, IntPtr data) { var result = false; if (prop == AudioSessionProperty.AudioRouteChange) { var text = Marshal.PtrToStringAuto (data, size); result = (text.Contains ("Head")); } return result; } 

No lo probé en un dispositivo real. Solo convierta uno de Objective-C fragments de Objective-C .

  using System.Runtime.InteropServices; using MonoTouch.AudioToolbox; public override void ViewDidLoad() { base.ViewDidLoad(); . . . AudioSession.Initialize(null, NSRunLoop.NSDefaultRunLoopMode); AudioSession.AudioRouteChanged += AudioSession_AudioRouteChanged; } void AudioSession_AudioRouteChanged (object sender, AudioSessionRouteChangeEventArgs e) { if (e.CurrentOutputRoutes [0] == AudioSessionOutputRouteKind.Headphones) { //Code when is plugged } else { //Code when is unplugged } }