2013-10-19 77 views
2

我很抱歉问这个问题,这里再次讨论这个问题很多次。但是没有一个答案对我没有帮助。我需要的只是在viewDidLoad中添加一些简单的代码,以检查耳机是否插入或未插入。 (如果他们不是,我想弹出简单的信息,但那不是我要求怎么做的。)任何帮助?检查应用程序启动时是否插入了耳机

+0

这是一个很大的问题!感谢提问,了解答案很有意思。 – hybridcattt

回答

9

这应该实现你想要的(6+的iOS兼容)

- (BOOL)areHeadphonesPluggedIn { 
    NSArray *availableOutputs = [[AVAudioSession sharedInstance] currentRoute].outputs; 
    for (AVAudioSessionPortDescription *portDescription in availableOutputs) { 
     if ([portDescription.portType isEqualToString:AVAudioSessionPortHeadphones]) { 
      return YES; 
     } 
    } 
    return NO; 
} 
+0

工作很好!谢谢。无论如何,有没有其他解决方案适用于较老的iOS? – TomasJ

+0

我还没有尝试过,但有几个关于它的线程。这是一个例子:http://stackoverflow.com/questions/10685313/detecting-if-headset-are-plugged-into-ios-device –

+0

谢谢,这适用于iOS9。有很多老字符串讨论这个主题,但他们似乎过时了。 – BenHedges

1

这里是雨燕1.2版本的代码由加布里埃尔Petronella书面

//This method checks if headphones are plugged in. 

func areHeadphonesPluggedIn()->Bool 
{ 
    var availableOutputs = AVAudioSession.sharedInstance().currentRoute.outputs 
    for portDescription in availableOutputs 
    { 
     if portDescription.portType == AVAudioSessionPortHeadphones 
     { 
      return true 
     } 
    } 
    return false 
} 
相关问题