【问题标题】:Detect plugged & unplugged event on headphone jack in Xamarin.iOS (iOS 7)在 Xamarin.iOS (iOS 7) 中检测耳机插孔上的插入和拔出事件
【发布时间】:2013-11-11 21:19:17
【问题描述】:

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

【问题讨论】:

  • 您尝试了哪些解决方案?

标签: ios xamarin.ios ios7 xamarin headphones


【解决方案1】:

类似这样的:

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;
}

没有在真实设备上尝试过。只需转换Objective-C sn-ps 之一。

【讨论】:

    【解决方案2】:
        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                        
                }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2017-04-24
      • 2016-04-14
      • 2013-05-08
      • 2011-04-17
      • 2011-08-19
      • 2013-07-17
      • 2016-06-10
      • 1970-01-01
      相关资源
      最近更新 更多