相信大家都看到过很多iPhone检测耳机插入/拔出的文章,比如http://blog.csdn.net/onlyou930/article/details/7442596里面提到的检测代码确实是可行的。但是我们在使用时经常会忘了重要的初始化步骤
AudioSessionInitialize(NULL, NULL, NULL, NULL);
如果少了这条初始化代码,就会导致程序在运行到if((route==NULL)||(CFStringGetLength(route)==0))处时报出EXC_BREAKPOINT的错误。
而如果要检测是否存在耳麦,则必须得在初始化后添加上这条语句
[[AVAudioSession sharedInstance] setActive: YES error:NULL];
如果少了这条语句,那么遇到带耳麦的耳机,其route值就会一直是"Headphone",即没有识别到耳麦,只有加上了这条语句,route值才会变为"HeadsetInOut"