如何检测设备(iPhone/iPad)中是否有可用的麦克风 - 目标C.

Nit*_*oth 2 hardware microphone objective-c ios ios7

在我的iOS应用程序中,我想显示一个Alert,如果Mic is not available in the device.

我怎么检查这个?

我试过这个 -

 -(void)checkMic
 {
  UInt32 sessionCategory = kAudioSessionCategory_RecordAudio;
   OSStatus status = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);  //..always seems to return OK..
   status = AudioSessionSetActive (true);
   if(status)
   {
      //mic is not available
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是此代码显示错误消息 - 已弃用.

Jef*_*lin 11

AudioSessionSetPropertyAudioSessionGetProperty被弃用的iOS 7.使用的AVAudioSession替代.

您可以使用其availableInputs属性获取可用内容列表并通过它们进行迭代,以找到一个看起来像麦克风的内容,如下所示:

NSArray *availableInputs = [[AVAudioSession sharedInstance] availableInputs];
BOOL micPresent = false;
for (AVAudioSessionPortDescription *port in availableInputs)
{
    if ([port.portType isEqualToString:AVAudioSessionPortBuiltInMic] ||
        [port.portType isEqualToString:AVAudioSessionPortHeadsetMic])
    {
        micPresent = true;
    }
}

if (micPresent)
{
    // Do something cool
}
else
{
    // No mic present - show alert
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想要任何输入,并且不关心它是麦克风还是线路输入,您可以这样做:

if ([[AVAudioSession sharedInstance] inputAvailable];
{
    // Do something cool
}
else
{
    // No input present - show alert
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2784 次

最近记录:

11 年,6 月 前