检测堵塞&;Xamarin.iOS(iOS 7)中耳机插孔的拔出事件

检测堵塞&;Xamarin.iOS(iOS 7)中耳机插孔的拔出事件,ios,xamarin.ios,ios7,xamarin,headphones,Ios,Xamarin.ios,Ios7,Xamarin,Headphones,我正试图找到一种方法来检测Xamarin.iOS中耳机插孔的插拔事件,特别是最新版本(iOS 7)。我发现一些帖子为早期版本提供了解决方案,但这在iOS7上似乎不起作用。在这个版本中有没有办法做到这一点?如果是,我如何实现该功能?类似这样的内容: 使用System.Runtime.InteropServices; 使用MonoTouch.AudioToolbox; ... 公共覆盖无效ViewDidLoad() { base.ViewDidLoad(); AddListener(AudioSes

我正试图找到一种方法来检测Xamarin.iOS中耳机插孔的插拔事件,特别是最新版本(iOS 7)。我发现一些帖子为早期版本提供了解决方案,但这在iOS7上似乎不起作用。在这个版本中有没有办法做到这一点?如果是,我如何实现该功能?

类似这样的内容:

使用System.Runtime.InteropServices;
使用MonoTouch.AudioToolbox;
...
公共覆盖无效ViewDidLoad()
{
base.ViewDidLoad();
AddListener(AudioSessionProperty.AudioRouteChange,EventHandler);
}
void EventHandler(AudioSessionProperty、int size、IntPtr数据)
{
var isHeadphonesAvailable=isHeadphonesAvailable(道具、尺寸、数据);
如果(ISHEADPHONES可用){
//做点什么
}否则{
//做点别的
}
}
bool IsHeadphonesAvailable(AudioSessionProperty道具、整数大小、整数PTR数据)
{
var结果=假;
if(prop==AudioSessionProperty.AudioRouteChange){
var text=Marshal.PtrToStringAuto(数据,大小);
结果=(text.Contains(“Head”);
}
返回结果;
}

没有在真正的设备上试过。只需转换一个
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                        
            }
    }