检查MIC是否被其他iOS应用程序锁定或使用

时间:2014-01-28 14:16:27

标签: ios avfoundation microphone video-recording voice-recording

我想检测MIC当前是否被其他任何iOS应用程序锁定或使用。我没有得到任何信息来检查MIC是否可以使用?如果某些其他应用程序,当前通话,面对面通话已经使用了MIC,我不想让用户录制视频。

有人能告诉我解决这个问题的方法吗?

提前致谢。

更新:添加功能以检查MIC是否正忙

+(BOOL)isMicResourceBusy
{
    NSError *error = nil;

    NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];
    NSNumber *formatObject;
    formatObject = [NSNumber numberWithInt: kAudioFormatMPEG4AAC ];

    [recordSettings setObject:formatObject forKey: AVFormatIDKey];
    [recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey];
    [recordSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
    [recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
    [recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
    [recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityHigh] forKey: AVEncoderAudioQualityKey];

    NSURL *soundFileURL = [NSURL fileURLWithPath:[FileUtils getNewFilenameWithPrefix:@"testAudioRecording" ext:@"aac"]];

    AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc]initWithURL:soundFileURL settings:recordSettings error:&error];

    if ([audioRecorder prepareToRecord] && error == nil)
    {
        return NO;
    }
    else
    {
        NSLog(@"Error: %@", error.localizedDescription);
    }
    return YES;
}

3 个答案:

答案 0 :(得分:1)

您可以尝试 [[AVAudioSession sharedInstance] inputNumberOfChannels] 并检查值是否为 0。太糟糕了,我找不到任何相关文档

答案 1 :(得分:0)

我认为没有办法检查其他应用是否正在使用麦克风。有一个方法[AVCaptureDevice lockForConfiguration]但它似乎不起作用。

答案 2 :(得分:0)

使用if AVAudioSession.sharedInstance().isOtherAudioPlaying == true{}

可以解决这个问题。