ios - 如何检测设备(iPhone/iPad)中的麦克风是否可用- Objective C

标签 ios objective-c ios7 hardware microphone

<分区>

在我的 iOS 应用程序中,如果 Mic 在设备中不可用,我想显示一个 Alert

我怎样才能检查这个?

我已经试过了-

 -(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
    }
  }

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

最佳答案

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
}

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

if ([[AVAudioSession sharedInstance] inputAvailable];
{
    // Do something cool
}
else
{
    // No input present - show alert
}

关于ios - 如何检测设备(iPhone/iPad)中的麦克风是否可用- Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247972/

相关文章:

ios - 取消 Segue 并显示警报 - Xcode

objective-c - 应用程序在 iPad 3 上崩溃,但在 iPad 2 上没有 - 崩溃日志

ios - 无法从 IOS 中的 NSNotificationCenter 调用 UITabview

iphone - NavigationItem Titleview 在 IOS 7 下位于导航栏中心 - 不可能吗?

ios - 将 Apple SCN 文件批量转换为 DAE

ios - 适用于 iOS 的演示叠加层

ios - CarPlay:现在播放 "alert"可能吗?

ios - 自定义 Xcode IDE 插件错误 : "Could not find class named..."

iphone - Core Plot 中的 Scatter Plot 到底是什么?

ios - 基于图像的核心数据模型关系是否正确?