【问题标题】:Detect Headphones Unplugged - Monotouch检测耳机未插入 - Monotouch
【发布时间】:2012-01-18 00:23:30
【问题描述】:

有没有办法在 Monotouch 中检测耳机是否拔出?我正在尝试寻找AudioSessionAddPropertyListener 方法,但没有看到它。这个方法移植了什么?

这是 Apple 的文档:http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html#//apple_ref/doc/constant_group/Audio_Session_Interruption_States

如果有人想查看如何执行此操作的代码,您可以执行以下操作:

AudioSession.PropertyListener p = delegate(AudioSessionProperty prop, int size, IntPtr data) {

            NSDictionary propertyDictionary = new NSDictionary(data);

            if (propertyDictionary.ContainsKey(NSObject.FromObject("OutputDeviceDidChange_OldRoute")))
            {
                string oldRoute = propertyDictionary.ValueForKey(new NSString("OutputDeviceDidChange_OldRoute")).ToString();

                if (oldRoute == "Headphone")
                {
                    if (audioPlayer != null)
                    {
                        audioPlayer.Pause();    
                    }
                }
            }
        };

        AudioSession.AddListener(AudioSessionProperty.AudioRouteChange, p);

【问题讨论】:

    标签: iphone ios binding xamarin.ios audiotoolbox


    【解决方案1】:

    有没有办法在 Monotouch 中检测耳机是否拔出?

    我不确定,但是...

    我正在尝试查找 AudioSessionAddPropertyListener 方法,但没有看到。这个方法移植了什么?

    AudioSessionAddPropertyListener 的本机调用映射到 MonoTouch 的 AudioSession.AddListener 静态方法。

    【讨论】:

    • 优秀。这就是我所需要的。您是否曾在某个地方查看过 API 是如何映射的(在 MonoTouch 和本机调用之间)?
    • Miguel 的玫瑰石碑 tirania.org/tmp/rosetta.html 是处理 (Objective-C) 选择器时的最佳资源,但它目前不显示对 C 库的 pinvokes。一般来说,绑定保持命名足够相似,以至于 MonoDevelop IDE 自动完成应该建议您可能的候选人。
    猜你喜欢
    • 2010-10-26
    • 2017-04-24
    • 2011-04-04
    • 2013-05-08
    • 1970-01-01
    • 2011-09-09
    • 2016-02-25
    • 2013-04-17
    • 2012-05-27
    相关资源
    最近更新 更多