检测iPhone/iPod Touch配件

Jos*_*ler 10 iphone objective-c ipod-touch

是否可以检测iPod Touch/iPhone是否连接了耳机或其他配件?

我正在构建一个需要麦克风的应用程序,需要知道"iSomething"是否有连接,无论是通过基座连接,还是使用耳机端口,例如Apple的内置耳机/麦克风配件.

Jos*_*ler 10

终于找到了它 - 在初始化Audio Session对象之后, - AudioSessionInitialize() - 你可以调用AudioSessionGetProperty,并获得kAudioSessionProperty_AudioInputAvailable的值.

AudioSessionInitialize(NULL, NULL, NULL, NULL);    
UInt32 propertySize, micConnected;
    AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected);
    [self updateMicStatus:micConnected]; // user-created method
Run Code Online (Sandbox Code Playgroud)

根据音频会话服务的文档,应该使用它而不是使用设备模型(iPhone与iPod Touch)来确定是否可以使用音频输入.您还可以设置回调函数,以通过AudioSessionAddPropertyListener()监视对此属性的更改.

不确定此属性是否也适用于通过Dock连接器连接的设备,但它似乎适用于耳机插孔.