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

3

我希望能够检测麦克风当前是否被锁定或被任何其他iOS应用程序使用。我没有获得任何信息来检查麦克风是否可供使用?如果麦克风已经被其他应用程序,活动呼叫,FaceTime呼叫使用,我不想允许用户录制视频。

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

提前致谢。

更新:添加检查麦克风是否忙碌的功能

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

你有没有尝试在其他应用程序正在使用麦克风时初始化 AVAudioRecorder?我现在无法测试,但我有一种感觉,你会收到一个错误,从而不允许用户录制。 - Gad
@GadMarkovits 请看我的更新。我编写了一个使用AVAudioRecorder检查麦克风是否繁忙的函数。但是,即使Skype语音通话处于活动状态,它始终返回NO。 - Nitin
3个回答

1

我认为没有办法检查麦克风是否被其他应用程序使用。有一种方法[AVCaptureDevice lockForConfiguration],但似乎不起作用。


有时候我们需要检查一下,我觉得是这样的,比如说webrtc通话没有释放所有对音频的引用,所以橙色点仍然在iPhone的顶部显示着。 - famfamfam

1
你可以尝试使用[[AVAudioSession sharedInstance] inputNumberOfChannels]并检查该值是否为0。很遗憾,我找不到任何关于此的文档。

1

使用 if AVAudioSession.sharedInstance().isOtherAudioPlaying == true{} 可以解决这个问题。


解决了我的问题。 - Eray Alparslan
未解决,对于我的情况来说,当WebRTC通话尚未全部释放时,所以橙色圆点仍然存在,下次用户可以随便说话。@ErayAlparslan - famfamfam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接